适配器中异步任务的效率

时间:2016-11-07 13:54:55

标签: android android-asynctask android-viewpager android-pageradapter

我有一个包含ViewPager的HomeScreenActivity,它包含3个页面。现在我想通过Async Task下载一些内容,以便在第1页中显示它。

代码流程:

  

HomeActivity - 我设置viewpager适配器。

     

HomeViewPagerAdapter

     

CustomAsyncTask

     

CustomAsyncTaskInterface - 通知下载内容。

从适配器调用AsyncTask是一个好方法吗?或者我应该从HomeActivity做到吗?

2 个答案:

答案 0 :(得分:1)

如果AsyncTask应该为适配器构建数据列表,那么它应该从包含适配器的Activity / Fragment运行。您将在onPostExecute中设置或通知适配器。

如果AsyncTask正在为每个适配器项下载数据,那么它应该是适配器类的一部分,在getView中调用,并且您从onPostExecute更新getItem(position)元素。

例如,假设您有包含图像URL的数据列表,但适配器只需要显示项目的标题,而不是立即显示图像。第一个获取所有项目数据列表的AsyncTask都在Activity

您只需在单击某个项目时显示该图像,或获取有关某些内容的其他详细信息。在这种情况下,获取更多数据的辅助AsyncTask(特别是针对特定项目)位于适配器中。

答案 1 :(得分:0)

我认为更好的方法是在AsyncTask的onPostExecute方法上设置适配器,因为你会知道AsyncTask已经完成执行。