Android RxJava2 句柄方向已更改

Android RxJava2 Handle Orientation Changed

我是这个图书馆的新人,所以如果您有任何提示或建议,我们非常欢迎。 我得到了 RxJava2 运行 并执行了一个 longNetworkOperation 假方法,流程是这样的:

观察者:

 Observer observer = new Observer() {
    @Override
    public void onSubscribe(Disposable d) { Log.d(TAG,"onSubscribe, thread name >> "+Thread.currentThread().getName()); }

    @Override
    public void onNext(Object value) { Log.d(TAG,"on next, input value:<<"+value.toString()+">>  thread name >>"+Thread.currentThread().getName());}

    @Override
    public void onError(Throwable e) { Log.d(TAG,"error >>"+e.toString()); }

    @Override
    public void onComplete() {
        Log.d(TAG,"onCompleted  thread name >> "+Thread.currentThread().getName());
        tvRxJava = (TextView) findViewById(R.id.tv_rxjava); //update the reference of tvRxJava.
        tvRxJava.setText("process executed..."); //this line does not change the value of the TextView tvRxJava.
    }
};

这工作正常,没有设备旋转,但如果您旋转设备,而 doLongNetworkOperation 在后台 运行,TextView tvRxJava 不会更新值。 甚至没有新的注入。

tvRxJava = (TextView) findViewById(R.id.tv_rxjava); 

如何使用 RxJava2 管理 android 中的方向变化??

这是我的 gradle 部门:

compile 'io.reactivex.rxjava2:rxjava:2.0.5'//rxjava2
compile 'io.reactivex.rxjava2:rxandroid:2.0.1' //rxjava2 for android

通常我希望有可观察对象的缓存机制,以便在配置更改时再次取回结果(这会强制 activity 重新创建)。 为了解决这个问题,我分享了两篇很好的文章,可以给你很清楚的图片。

  1. First
  2. Second

我目前在申请中采用第二种方法。