rxjava-以保存方式将其用于全球作业



如果我希望某件事能够运行并完成,无论生命周期和订户如何,都遵循正确的方法?

我创建一个单身人士,然后从中运行一个"作业",如下:

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光滑。

最新更新