AsyncTask
在另一个线程中运行复杂任务是一件很棒的事情。
但是,当有方向更改或其他配置更改时,AsyncTask
仍在运行,当前Activity
被摧毁并重新启动。作为实例AsyncTask
连接到该活动时,它将失败,并导致“强制关闭”消息窗口。
因此,我正在寻找某种“最佳实践”,以避免这些错误和防止AsyncTask失败。
到目前为止我看到的是:
onRetainNonConfigurationInstance
Activity
将被销毁,并在Activity
再次创建。你能帮我找到解决问题的最佳方法吗?代码本身也很重要,因为我不知道如何正确地解决这个问题。
发布于 2018-03-23 11:19:15
我通常通过在.onPostExecute()回调中使用AsyncTask火广播意图来解决这个问题,这样它们就不会直接修改启动它们的活动。这些活动使用动态广播收发器收听这些广播,并采取相应行动。
这样,AsyncTask就不必关心处理其结果的特定活动实例。当他们完成任务时,他们只会“喊”,如果某个活动在那个时候(活动和集中/处于恢复状态),并且对任务的结果感兴趣,那么它就会被处理。
这涉及到更多的开销,因为运行时需要处理广播,但我通常并不介意。我认为使用LocalBroadCastManager而不是默认的系统Wide可以加快速度。
https://stackoverflow.com/questions/-100003215
复制相似问题