是否仍然建议在后台加载listView项目使用AsyncTask?

and*_*per 6 android android-listview android-asynctask android-loader

背景

我听说有一些新的解决方案可以在后台加载数据,这比AsyncTask(比如加载器)更值得推荐.

问题

AsyncTasks很棒且易于使用.但是,它有一些局限性:

  1. 类本身必须进行修改,因为它受到待处理任务数量的限制(约256左右).当然,在listView的适配器中,如果不需要,我总是取消任务(例如,当我需要更新用于其他项目的视图时).

  2. 在重新创建活动/片段时,我还必须全部取消它们(或以不同的方式处理).

  3. 由于1和2,我需要管理它们并参考所有这些

  4. AsyncTask使用一个任务队列,有时我需要使用堆栈,所以我不得不创建自己的AsyncTask类,而不是使用堆栈.

这个问题

是否有AsyncTask的替代品?

我知道之前曾在某些帖子中提到这个问题(比如这里),但我在想是否有一种新的通用方法可以在后台加载数据来替换asyncTask.

关于Loaders,我认为这个想法是它们用于数据库和contentProviders,但它们是否也可以用于从Internet上加载(例如)数据(如图像文件)?

还有一个很好的样本由谷歌(这里称为"bitmapFun"),根据我所看到的使用AsyncTask(甚至扩展它,可能是因为我提到的相同的原因).但也许我也错过了一些东西?

G. *_*ike 2

是的。

加载器由 AsyncTasks 管理。如果您不使用加载程序,您可能会缺少它们所需的管理。

AsyncTasks(和 Loaders)是获取设备外内容的一种非常糟糕的方式。要从远程服务器获取数据,请考虑使用 IntentService。请参阅:https://www.youtube.com/watch?v =xHXn3Kg2IQE