如何在列表视图中使用延迟加载或异步任务

时间:2011-08-08 23:05:29

标签: android listview load android-asynctask lazy-evaluation

我在我的应用程序中创建了一个视图列表,其中显示了用户设备中所有已安装的应用程序。它显示名称和图标。列表视图需要很长时间才能加载,并且UI在加载时没有响应。我已经看到了具有延迟加载和异步任务教程的资源,但它们似乎都从互联网上获取图像。我需要延迟加载系统中的图像(这是应用程序图标)。我也不知道如何使用异步任务执行此操作。有人可以帮我懒惰加载或asynctask应用程序图标。这是我申请的一个非常重要的部分,我将非常感激。感谢。

1 个答案:

答案 0 :(得分:3)

因此,如果没有任何明确的尝试/代码可供展示,我通常不会提供建议,但我记得当我第一次遇到AsyncTasks和线程时,以及它最初有点令人困惑,所以我会让你开始走上正轨。

因此AsyncTask基本上运行一个可能需要一段时间的过程(例如从服务器加载信息,或者在您的情况下加载信息)。它有两个详细的方法here,但我相信,对于您的方案,您只需要使用doInBackgroundonPostExecute方法。您可能正在做的每一项工作是在doInBackground中获取ListView的实际图像和数据,然后更新ListView以在onPostExecute中显示该数据。考虑概述here的示例。从本质上讲,doInBackground方法将向onPostExecute方法发送一些数据(在这种情况下,您的文件和其他内容 - 通常以数组或List的形式或者如果有大量数据被发送的话)它将处理来自那里的数据。

正在发生的事情是您的主UI线程负担过重,程序将等待您的UI间歇性地获取和加载图像。 AsyncTask通过将所有工作抛给单独的工作线程来为您解决这个问题。当UI线程负担过重时通常会出现问题,例如程序意外关闭,因为Android注意到主应用程序线程使用了太多资源(代码中没有实际的错误)。

至于图像数据的延迟加载,我不完全确定它是如何工作的(从来不必使用它),但this似乎真有帮助。

希望能给你一些指导。