自从 Loaders 和 AsyncTask 被弃用后,您对 运行 长任务使用什么?

What do you use for long running tasks since Loaders and AsyncTask have been deprecated?

LoadersAsyncTask 确实易于使用并且对 类 执行网络 http 请求等长时间操作很有帮助,但由于它们已被弃用,我不能'找到一个替代品。我知道我可以按照 Google 的建议使用 LiveData + ViewModel 但它们不是在单独的线程中执行任务,那么除了它们我们还能使用什么? RxJava?或者其他什么? (无论手动创建 ThreadsExecutors

*我用Java.

对于执行网络请求,您使用的网络库应该能够处理。所有网络SDK(Okhttp、Retrofit)都处理后台处理,你不用担心。

对于其他后台进程,或者如果您使用自己的代码进行 HTTP 调用(如 HttpUrlConnection 等),您有两种选择。

  1. 协程。如果您的项目在 Java 中,那将不是问题,因为 Java 和 Kotlin 是可互操作的。

  2. ExecutorService:提供了一堆有用的 API 来将任务推送到后台,然后您可以使用 MainThread Looper 将数据从后台线程发送回 UI。

  3. 处理程序线程和 Intent 服务:它们是标准 android API,仅用于后台处理。

参考:https://developer.android.com/guide/background