使用Dagger2在活动之间持久化RxJava调用
我在使用Dagger2在活动之间持久化RxJava调用,java,android,rx-java2,Java,Android,Rx Java2,我在ExecutionStream类中有一个BehaviorRelay对象,用于处理网络调用。请参阅ExecutionStream类 我可以从任何活动调用requestTrackingAndExecution()方法。我已经实现了Dagger2依赖,这样我就可以在任何活动中注入ExecutionStream实例 我的匕首2配置: @PerApplication @Provides public ExecutionStream provideExecutionStream(PmsApi pmsAp
ExecutionStream
类中有一个BehaviorRelay
对象,用于处理网络调用。请参阅ExecutionStream
类
我可以从任何活动调用requestTrackingAndExecution()
方法。我已经实现了Dagger2依赖,这样我就可以在任何活动中注入ExecutionStream
实例
我的匕首2配置:
@PerApplication
@Provides
public ExecutionStream provideExecutionStream(PmsApi pmsApi) {
return new ExecutionStream(pmsApi);
}
@PerApplication
注释
@Scope
@Retention(RUNTIME)
public @interface PerApplication { }
我需要做的是:
我想从活动A中调用requestTrackingAndExecution()
方法,并在活动B中订阅其发出的数据
当前,活动B中的suubscriber未获取从活动A发出的任何数据在活动A运行
requestTrackingAndExecution()
方法之前,活动B是否订阅了Interstips and TrackingRelay
我一次又一次地重新初始化我的应用程序模块
更改为:
public ApplicationComponent getComponent() {
ApplicationComponent component = DaggerApplicationComponent.builder()
.networkModule(new NetworkModule())
.ApplicationModule(new ApplicationModule(this))
.build();
return component;
}
为此:
public synchronized ApplicationComponent getComponent() {
if(component == null) {
component = DaggerApplicationComponent.builder()
.networkModule(new NetworkModule())
.ApplicationModule(new ApplicationModule(this))
.build();
}
return component;
}
否。活动B位于活动A之后。活动A是否收到任何数据?你能发布你的网络通话记录吗?你确定你同时收到跟踪和执行调用的响应吗?我找到了一个解决方案。请看答案。我定义了单例,但每次都在重新创建组件。
public ApplicationComponent getComponent() {
ApplicationComponent component = DaggerApplicationComponent.builder()
.networkModule(new NetworkModule())
.ApplicationModule(new ApplicationModule(this))
.build();
return component;
}
public synchronized ApplicationComponent getComponent() {
if(component == null) {
component = DaggerApplicationComponent.builder()
.networkModule(new NetworkModule())
.ApplicationModule(new ApplicationModule(this))
.build();
}
return component;
}