rxandroid/rxjavaのサブスクリプション(subscribeOn
以下のコードはその特定のスレッドで実行されます)の概念をよく理解しています(subscribeOn
と同じです)。異なるスレッドで操作を実行し、rxandroidのメインスレッドに通知する方法は?
バックグラウンドスレッドでlong io操作を実行し、操作が完了した場合にメインスレッドに通知します。このようにブロックしていない、
Observable.just(1)
.subscribeOn(Schedulers.io())
.flatMap(o -> {
longIO();
return null;})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(//i want to notify user here);
これは実際には別のスレッドでlongIO()
を実行している:これを行うには、私はその後、subscribe
AndroidSchedulers.mainThread()
にこのような何かを観察Schedulers.io()
に加入しているflatmap
を持つと思っていますメインスレッドではない場合は、Toast
またはAlertDialog
を作成して、アンドロイドは通知することができませんので、メインスレッドにはlongIO()
が完了していることを通知しません。私はflatMap
内部メソッドを実行することにしたいので、私は整数1を使用していないにもかかわらず、just(1)
を使用:コードがsubscribe
注を通過していないようです。 empty
を使用した場合、それは通過しません。flatMap
http://stackoverflow.com/questions/34272955/schedulers-io-not-returning-to-main-thread?rq=1これを参照してくださいリンク – Vijayaramanan
これで問題が解決するかどうかは後で確認します。 – hehe