【发布时间】:2012-09-29 15:18:33
【问题描述】:
引用 AsyncTask 的文档找到 here,它说:
AsyncTasks 最好用于短时间的操作(最多几秒钟)。如果您需要保持线程长时间运行,强烈建议您使用 java.util.concurrent 提供的各种 API Executor、ThreadPoolExecutor、FutureTask等包。
现在我的问题出现了:为什么? doInBackground() 函数在 UI 线程之外运行,那么在这里长时间运行操作有什么危害?
【问题讨论】:
-
在将应用程序(使用 asyncTask)部署到实际设备时遇到的问题是,如果不使用进度条,长时间运行的
doInBackground函数会冻结屏幕。 -
因为 AsyncTask 与启动它的 Activity 相关联。因此,如果 Activity 被杀死,您的 AsyncTask 实例也会被杀死。
-
如果我在服务中创建 AsyncTask 会怎样?这不是解决问题吗?
-
使用IntentService,完美解决后台长时间运行。