Android RxJava2 句柄方向已更改
Android RxJava2 Handle Orientation Changed
我是这个图书馆的新人,所以如果您有任何提示或建议,我们非常欢迎。
我得到了 RxJava2 运行 并执行了一个 longNetworkOperation 假方法,流程是这样的:
- 创建可观察对象:Observable.just("str1")
- 更改执行线程:.subscribeOn(Schedulers.newThread())
实现将执行 LongRunningProcess 的映射接口:
.map(new Function<String, String>() {
@Override
public String apply(String cad){ // cad is the input value
Log.d(TAG,"long operation in thread: "+Thread.currentThread().getName()); //output thread name
return " longNetworkOperation result => "+doLongNetworkOperation(); //here we do the background operations
}})
在主线程中获取结果:.observeOn(AndroidSchedulers.mainThread())
添加接收结果通知的观察者:.subscribe(observer);
观察者:
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
我是这个图书馆的新人,所以如果您有任何提示或建议,我们非常欢迎。 我得到了 RxJava2 运行 并执行了一个 longNetworkOperation 假方法,流程是这样的:
- 创建可观察对象:Observable.just("str1")
- 更改执行线程:.subscribeOn(Schedulers.newThread())
实现将执行 LongRunningProcess 的映射接口:
.map(new Function<String, String>() { @Override public String apply(String cad){ // cad is the input value Log.d(TAG,"long operation in thread: "+Thread.currentThread().getName()); //output thread name return " longNetworkOperation result => "+doLongNetworkOperation(); //here we do the background operations }})
在主线程中获取结果:.observeOn(AndroidSchedulers.mainThread())
添加接收结果通知的观察者:.subscribe(observer);
观察者:
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