【发布时间】:2018-09-06 17:51:56
【问题描述】:
我是 RxJava 的新手,正在尝试将我的 asyncTask 工作更新到 RxJava。作为第一次尝试,我完成了以下代码:
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
doSomeWork();
}
private String funcCallServerGet()
{
//Some code to call a HttpClient Get method & return a response string
//this is the method which previously i used to call inside asynctask doInbackground method
}
private void doSomeWork() {
getSingleObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSingleObserver()) ;
}
private Single<String> getSingleObservable()
{
return Single.create(new SingleOnSubscribe<String>() {
@Override
public void subscribe(SingleEmitter<String> emitter) throws Exception {
if(!emitter.isDisposed()) {
String strRxResponse = funcCallServerGet();
emitter.onSuccess(strRxResponse);
}
}
});
}
private SingleObserver<String> getSingleObserver()
{
return new SingleObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, " onSubscribe getSingleObserver: " + d.isDisposed()); }
@Override
public void onSuccess(String value) {
Log.d(TAG, " onNext : value : " + value); }
@Override
public void onError(Throwable e) {
Log.d(TAG, " onError : " + e.getMessage()); }
};
}
}
但我有一些困惑:
为什么我在 SingleObserver getSingleObserver() 的 onSubscribe() 中得到 false。
在调用活动 onStop() 时如何取消订阅或取消 observable/observer。
另外,屏幕定向时会发生什么。 observable 是自动取消订阅还是继续工作?设备旋转怎么办?
【问题讨论】: