首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >最佳实践:方向变更期间的AsyncTask

最佳实践:方向变更期间的AsyncTask
EN

Stack Overflow用户
提问于 2018-03-23 01:48:26
回答 2查看 0关注 0票数 0

AsyncTask在另一个线程中运行复杂任务是一件很棒的事情。

但是,当有方向更改或其他配置更改时,AsyncTask仍在运行,当前Activity被摧毁并重新启动。作为实例AsyncTask连接到该活动时,它将失败,并导致“强制关闭”消息窗口。

因此,我正在寻找某种“最佳实践”,以避免这些错误和防止AsyncTask失败。

到目前为止我看到的是:

  • 禁用方向更改。(当然不是您应该如何处理这个问题。)
  • 让任务存活,并通过以下方法使用新的活动实例更新任务:onRetainNonConfigurationInstance
  • Activity将被销毁,并在Activity再次创建。
  • 将任务绑定到应用程序类,而不是活动实例。
  • “货架”项目中使用的一些方法(通过onRestoreInstanceState)

你能帮我找到解决问题的最佳方法吗?代码本身也很重要,因为我不知道如何正确地解决这个问题。

EN

Stack Overflow用户

发布于 2018-03-23 11:19:15

我通常通过在.onPostExecute()回调中使用AsyncTask火广播意图来解决这个问题,这样它们就不会直接修改启动它们的活动。这些活动使用动态广播收发器收听这些广播,并采取相应行动。

这样,AsyncTask就不必关心处理其结果的特定活动实例。当他们完成任务时,他们只会“喊”,如果某个活动在那个时候(活动和集中/处于恢复状态),并且对任务的结果感兴趣,那么它就会被处理。

这涉及到更多的开销,因为运行时需要处理广播,但我通常并不介意。我认为使用LocalBroadCastManager而不是默认的系统Wide可以加快速度。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档