Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Dagger2在活动之间持久化RxJava调用_Java_Android_Rx Java2 - Fatal编程技术网

使用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;
    }