我应该为每个http连接使用一个Loader还是为所有它单独使用一个Loader?

时间:2018-09-28 18:33:08

标签: android android-studio asynctaskloader

我是Android的新手,正在尝试制作一个简单的新闻供稿应用。我正在使用Asynctaskloader进行后台操作。目前,我仅使用一个Loader连接不同的新闻源。我的问题是我应该为每个新闻源定义并运行不同的加载程序,还是由单个加载程序来处理?我问是因为打开应用程序时,加载新闻需要5到10秒的时间(到目前为止,我仅添加了三个新闻源),这可能是因为使用了一个加载程序吗?

2 个答案:

答案 0 :(得分:1)

使用单个加载程序的loadInBackground方法访问不同的数据源的问题在于,这样的访问将在关联的线程中顺序进行。从N个来源获取和返回新闻的总时间将是每个时间的总和,包括延迟或超时,前提是您等到下载完所有内容后才能继续演示。

您应该考虑使用更多线程/加载器或其他策略(例如获取1,显示1,获取2,添加2等),以使用户不会因等待而感到沮丧。

答案 1 :(得分:0)

加载程序之所以出色,是因为它能够处理生命周期,但效率不如LiveData和ViewModel。如果您关心性能,速度和最新信息,则可以使用Android体系结构组件(LiveData,ViewModel),也不必使用旧的服务器系统,可以编写多个简单的AsyncTask并将其与ViewModel和LiveData。它像魔术一样工作,并且比装载机更好。有关如何在LiveData和ViewModel中包装AsyncTask的信息,请访问https://medium.com/androiddevelopers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4