生成大量 AsyncTask 实例 - 影响?

Spawning numerous AsyncTask instances - implications?

我正在设计一个 Android 应用程序目标 >= API 17. 我创建了一个 class,扩展 AsyncTask 的 DownloadImageTask,并接收一个字符串(URL ) 和一个 ImageView 作为参数。在其中,我打开一个 HTTP 连接,从 URL 下载图像,并使用 BitmapFactory 从数据创建一个 Bitmap 对象,然后将位图设置到 ImageView。最终结果是一个填充的数据列表,用户可以滚动浏览这些数据,并尽可能填充图像。

从表面上看,这似乎是一个不错的设计 - 但我担心我会让我的应用程序面临 OOM 条件或其他违反用户体验规则的风险。我想知道我设计的方式是否正确,如果不正确,我应该如何处理。

预先感谢您的帮助。

你自己方法的两个注意事项:

  1. 您不应该将 ImageView 传递给异步任务,因为这样您就耦合了视图和服务层。因此,向异步任务发送 URL 和 onPostExecute 方法调用 Activity 实现 updateView(或类似)方法。
  2. 关于你的OOM,你是对的。如果您使用的原始位图可能具有比所需分辨率更大的分辨率,则可能会出现此问题。因此,您应该缩小内存中的图像。

最后一期如果用几张图可能不难,否则可能会出问题。因此,如果您将使用大量图像并且您没有被迫实现自己的版本,那么您应该查看现有的库。有些已经提到了: