如果我希望某件事能够运行并完成,无论生命周期和订户如何,都遵循正确的方法?
我创建一个单身人士,然后从中运行一个"作业",如下:
public void clearImageCache() {
Single.fromCallable(() -> {
ImageManager.clearCacheFromBackground();
return true;
}
)
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(ignored -> {
// finished
}, error -> {
// error
});
}
使用RxJava
进行背景工作的上述方法是独立于活动和生命周期的良好的方法吗?无论如何,我都希望它完成。我认为如果应用程序未破坏,则应该保存并应完成。这样做可以吗?还是我在这里错过了我应该照顾的东西?
我不是在谈论返回的 Disposable
,但我认为这很好,因为我从不想取消订阅。
这将正常工作,直到您的应用程序没有从记忆中杀死,即从最近的任务中刷掉,被迫停止或被OS杀死。另外,您应该在Schedulers.io()
上进行subscribeOn
,因为它将承担大量主线程并保持UI光滑。