基本上我Handler
在我的消息中Fragment
收到一堆消息,这些消息可能导致对话框被解除或显示.
当应用程序进入后台时,我得到了一个,onPause
但仍然可以像我们期望的那样得到我的消息.但是,因为我正在使用片段,所以我不能只关闭并显示对话框,因为这将导致一个IllegalStateException
.
我不能只是解雇或取消允许国家损失.
鉴于我有一个Handler
我想知道是否有一个推荐的方法,我应该如何在暂停状态下处理消息.
我正在考虑的一个可能的解决方案是记录暂停时播放的消息并将其播放回来onResume
.这有点令人不满意,我认为框架中必须有一些东西可以更优雅地处理这个问题.
我很欣赏有关轮换更改的AsyncTask的大量帖子.使用兼容性lib并试图解雇DialogFragment
in 时,我有以下问题onPostExecute
.
我有一个片段,它触发AsyncTask显示进度DialogFragment
,然后onPostExecute
解散对话框然后可能抛出另一个DialogFragment
.
如果在显示进度对话框时我把应用程序放到后台我得到了以下片段:
1) onPause
2) onSaveInstanceState
3)onPostExecute
我尝试解雇并调用对话框.
我得到一个IllegalStateException
因为我正在尝试在活动保存状态时有效地提交事务并且我理解这一点.
在轮换中,我假设(可能不正确)onPostExecute
在重新创建活动之前我不会得到.但是,当把应用程序放到后台时,我假设(肯定是错误的)onPostExectute
在片段/活动暂停时不会被调用.
我的问题是,我的解决方案是简单地检测onPostExecute
到片段/活动暂停并简单地执行我需要做的事情onResume
吗?对我来说似乎有些难看.
提前谢谢,彼得.
编辑1
需要支持2.1及以上版本
编辑2
我已经考虑过使用对话框FragmentTransaction:add
,FragmentTransaction:commitAllowingStateLoss
但这并非没有问题.
android android-lifecycle android-asynctask android-fragments