对于在另一个线程中运行复杂任务来说,AsyncTask
是一件很棒的事情.
但是,当在AsyncTask
仍在运行的同时存在方向改变或另一配置改变时,电流Activity
被 destruct 并重新启动.当AsyncTask
的实例连接到该活动时,它会失败并导致"强制关闭"消息窗口.
所以,我正在寻找某种"最佳实践",以避免这些错误,并防止AsyncTask失败.
到目前为止,我看到的是:
- 禁用方向更改.(当然不是你应该处理的方式.)
- 让任务存活下来,并通过
onRetainNonConfigurationInstance
使用新的活动实例对其进行更新 - 只需在销毁
Activity
时取消任务,并在重新创建Activity
时重新启动它. - 将任务绑定到应用程序类而不是活动实例.
- "Shelfs"项目中使用的一些方法(通过onRestoreInstanceState)
一些代码示例:
Android AsyncTasks during a screen rotation, Part I和Part II
你能帮我找到最好的解决问题的方法吗?而且很容易实现?代码本身也很重要,因为我不知道如何正确解决这个问题.