如果我有一个长时间运行的Task(例如AsyncTask,甚至是一个通过使用MainLooper和处理程序将结果发布回主线程的Thread)
是否有可能在未完全完成方向更改(从横向到纵向,反之亦然)时执行正在运行的任务结果(在主线程上执行)?
例如,以下情况是可能的:
所以我的问题是:
我可以认为这是理所当然的,方向更改将在主线程上执行肖像 Activity 的破坏和景观 Activity 的重新创建,而无需在它们之间执行onPostExecute()吗?
工作流程是否总是这样:
或像这样
但从来没有像这样:
我问是因为我不确定是否要在MainLooper上一次运行来破坏和重新创建 Activity ...很难对其进行测试,因为它的时间很难重现。因此,在这一点上,专家知识将是很棒的……它也可以使用Fragment(即,使用setRetainInstanceState)而不是Activity来实现
最佳答案
如果您使用Fragment#setRetainInstanceState(boolean)
,那么即使在Activity重新创建之后,也可以允许片段使AsyncTask保持 Activity 状态。这被认为是最好的方法,最后的选择是在 list 文件中设置configChanges="orientation|screenSize"
。
关于android - 改变方向的工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23746967/