Android - 异步任务的替代方案?

时间:2013-11-08 11:42:04

标签: android multithreading asynchronous memory-leaks android-asynctask

所以我有一个应用程序,其中我使用异步任务使用rest API从Django后端获取数据。当设备需要与站点同步时,将首次使用此选项。 因此,此同步任务会获取大量数据(2 GB)。我已经在很多地方读过,当进程不超过2-3秒时,确实应该使用异步任务。在我的情况下肯定会花更长的时间。

  1. 那么我的替代方案是什么?处理程序?有人可以指向解释如何的教程或文章吗?
  2. 在同步过程中,我的设备会关闭显示屏以节省电量。因此活动被破坏了。现在,在同步完成后,我会显示一个对话框,使用“AlertDialog”类,通知用户相同的内容。这会导致错误:Activity已经泄漏了一个窗口。这是一个严重的问题吗?可以做些什么来避免这种情况?使用片段显示对话框?

2 个答案:

答案 0 :(得分:3)

使用Service 它适用于长时间运行的任务,与您的Activity生命周期无关 如果您还将通知与下载相关联,则会对用户特别有用,显示进度(因为2GB可能需要花费大量时间来获取,特别是在移动连接上。说到这一点 - 请不要在移动连接上获取2GB的数据,而不会让用户明白你要做到这一点,或者让他们选择退出或仅在通过WiFi连接时这样做。数据有限的用户会感谢你; )
Here's a tutorial about services

或者您可以让操作系统处理所有这些并使用DownloadManager来获取文件。它负责设备重启,连接问题等 Sample projectTutorial

答案 1 :(得分:0)

最好使用IntentService在后台执行长时间运行的任务。它也将在完成工作后自动完成。