【发布时间】:2016-08-25 20:39:31
【问题描述】:
我非常了解订阅的概念(subscribeOn 以下的任何代码都将在该特定线程中执行)并在 rxandroid/rxjava 中观察(与 subscribeOn 相同)。
我想要发生的是在后台线程中执行长 io 操作,然后在操作完成时通知主线程。为此,我正在考虑在Schedulers.io() 中订阅flatmap,然后在AndroidSchedulers.mainThread() 中观察subscribe,如下所示:
Observable.just(1)
.subscribeOn(Schedulers.io())
.flatMap(o -> {
longIO();
return null;})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(//i want to notify user here);
这实际上是在另一个线程中执行longIO(),因此不会阻塞主线程,我的问题是,这不会通知主线程longIO()已经完成,注意android不允许通知如果不在主线程中,则通过创建 Toast 或 AlertDialog 来创建用户。代码好像没有通过subscribe
注意:我使用了just(1),尽管我不使用整数1,因为我希望执行flatMap 中的方法。如果我使用empty 它不会通过flatMap
【问题讨论】:
-
我稍后会检查这是否能解决我的问题。
标签: android rx-java rx-android