3 回答
TA贡献1811条经验 获得超5个赞
碎片实际上可以使这更容易。只需使用Fragment.setRetainInstance(boolean)方法,即可在配置更改中保留您的片段实例。请注意,这是docs中Activity.onRetainnonConfigurationInstance()的推荐替代品。
如果由于某种原因你真的不想使用保留的片段,你可以采取其他方法。请注意,每个片段都有Fragment.getId()返回的唯一标识符。您还可以通过Fragment.getActivity()。isChangingConfigurations()查看是否正在拆除片段以进行配置更改。因此,在您决定停止AsyncTask(最有可能在onStop()或onDestroy()中)的情况下,您可以检查配置是否正在更改,如果是,则将其粘贴在片段标识符下的静态SparseArray中,然后在你的onCreate()或onStart()中查看你是否在稀疏数组中有一个AsyncTask。
TA贡献1853条经验 获得超18个赞
我最近发布了一篇文章,描述了如何使用retain Fragments 处理配置更改。它解决了保持AsyncTask旋转变化很好的问题。
TL; DR是使用你的AsyncTask内部主机a Fragment,调用setRetainInstance(true)它Fragment,并通过保留AsyncTask来报告它的进度/结果Activity(或者它的目标Fragment,如果你选择使用@Timmmm描述的方法)Fragment。
- 3 回答
- 0 关注
- 404 浏览
添加回答
举报