-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Closed
Description
复用有2种方式。
- 复用通用的 Module,注入用原始的 Component。
- 使用依赖 Component 的方式重用 Component
复用通用的 Module
UserActivity 中注入通用 P
通用的 P 命名为 GirlPresenter, 逻辑就是发起一个请求

UserComponent 中要多添加一个通用的 Module

GirlModule 提供通用的 P 需要的对象
GirlPresenter
GirlContract
Model 的实现基本和 DEMO 中 UserModel 相同这里就不多写了
GirlPresenter 测试情况
使用依赖 Component 的方式重用 Component
@ActivityScope
@Component(modules = {UserModule.class},dependencies = AppComponent.class)
public interface UserComponent {
TestComponent plus(TestModule testModule);
}@TestScope //注意 Scope不同!!!不同 Component 的 Scope 不能相同
@Subcomponent(modules = {TestModule.class}) //要用@Subcomponent
public interface TestComponent {
void inject(UserActivity activity);
}@Module
public class TestModule {
private TestContract.View view;
public TestModule(TestContract.View view) {
this.view = view;
}
@TestScope //注意所有相关的 Scope 都要用 @TestScope
@Provides
TestContract.View provideTestView() {
return this.view;
}
} @Inject
TestPresenter mTestPresenter;
UserComponent userComponent;
@Override
public void setupActivityComponent(AppComponent appComponent) {
userComponent = DaggerUserComponent
.builder()
.appComponent(appComponent)
.userModule(new UserModule(this))
.build();
//通用的 TestComponent 的注入,这里 plus 后返回的对象类型是 TestComponent
userComponent.plus(new TestModule(this)).
inject(this);
mTestPresenter.requestUsers(true);
mPresenter.requestUsers(false);
}2 个 P 的回调方法都调用了的,这里就不截图了。
因为用了不同的Component,Scope 不能相同!!!带了 Scope 以后,Module,Model 等都需要新的 Scope,这就不是很方便。个人认为维护和阅读都不是很舒服,你想想一个 Acitivity 里面基类的主 Presenter 的 Scope 是一个,通用的 Presenter 的 Scope 是一个,感觉生命周期可能会出问题,这一点没深入研究,只提出自己的想法,欢迎讨论。
xiaobailong24, yedajiang44, jp1017, JessYanCoding, GloriousOnion and 8 morexiaobailong24, yedajiang44, jp1017, JessYanCoding, yaojunyi3721 and 2 morexiaobailong24, yedajiang44, JessYanCoding, Saturdaycong, wosika and 2 more
Metadata
Metadata
Assignees
Labels
No labels






