【发布时间】:2020-10-26 11:55:57
【问题描述】:
Loaders 和 AsyncTask 是非常易于使用且对执行网络 http 请求等长时间运行的操作很有帮助的类,但由于它们已被弃用,我找不到替代方案。我知道我可以使用谷歌建议的LiveData + ViewModel,但他们没有在单独的线程中执行任务,那么除了它们我们还能使用什么? RxJava?还是别的什么? (不管手动创建Threads和Executors)
*我使用 Java。
【问题讨论】:
-
你可以使用协程
-
Java 有什么用??
-
如果你需要使用流,你可以使用 Rx 或 Flow(协程流),否则你可以使用协程。仅使用 Rx 来更改线程是不必要的。
-
@ManuelMato 使用流是什么意思,好吗?例如,使用Java,如果我想做http请求并获得响应,我应该使用RxJava而不是AsyncTasks并与ViewModel结合吗?
-
数据流就是数据流,发出它们,你需要消费它们,例如蓝牙数据。如果你想从 api 获取数据,你可以使用使用挂起函数的协程(引擎盖下是回调),如果你愿意,可以在 viewmodel 中使用 livedata 来更新 ui。因此 ViewModel 使用 IO 调度程序启动协程,然后您可以使用 postValue 方法更新实时数据。协程比 Rx 更容易,而且我认为代码比 Rx 更清晰。您可以在 proandroiddev shorturl.at/coT02 中使用协程阅读并查看我的基础项目
标签: android multithreading android-asynctask background-process asynctaskloader