我在Android开发人员中已经读过这篇文章
警告:使用工作人员时可能遇到的另一个问题 由于运行时,线程在您的活动中意外重启 配置更改(例如用户更改屏幕时) orientation),这可能会破坏你的工作线程。看看你怎么样 在其中一次重启期间以及如何正确地执行任务 销毁活动时取消任务,请参阅源代码 对于Shelves示例应用程序。
我无法从提供的code
中清楚地理解当我有一个与Ui线程相关的后台工作,因此可以在configuration change
期间停止 -
如何在restart
vs destroy
期间正确处理工作线程?
答案 0 :(得分:3)
如果您的后台工作与Activity
相关联,则应使用提供AsyncTask
方法的cancel
。在任务中,您可以检查isCancelled
以了解是否退出操作。当Android再次创建活动时,您将有机会再次启动该任务。
如果您的后台工作与任何特定活动或UI元素无关,则应使用IntentService
并从应用中的任何位置运行该服务。然后,方向更改不会中断后台工作。
有时使用的快速修复/黑客方法是将Android配置为在方向更改时不重新创建活动 - 您可以使用AndroidManifest.xml中活动的android:configChanges
元素执行此操作。