当我的应用开始时,有一个开始按钮。用户可以启动一个不能忽略设置时间的片段。当用户按下这个片段时,他的意图是保留片段,因此释放资源是明智的。然而,当他按下家(硬件家)时,他的意图可能是检查一些东西并回来。在这种情况下,我想保留数据(不可序列化)。如何区分这两种情况?
答案 0 :(得分:1)
在我写这个问题时,我找到了一个解决方案,虽然不是最美丽的(需要保留一个标志)。对于这两个调用,在两种情况下都会调用onPause()
,onStop()
,onDestroy()
,onDetach()
。在这两种情况下,getActivity().isChangingConfigurations()
都返回false。但只有在按下主页时旋转设备和时才会调用onSaveInstanceState()
。所以:
后退按钮
isChangingConfigurations(): false
onPause()
onStop()
onDestroy()
onDetach()
主页按钮
isChangingConfigurations(): false
onPause()
onSaveInstanceState()
onStop()
onDestroy()
onDetach()
旋转设备
isChangingConfigurations(): true
onPause()
onSaveInstanceState()
onStop()
onDestroy()
onDetach()
注意:不保留片段。保留它会改变整个过程。
注意2:根据文档,可以在onSaveInstaneState()
之前的任何时间调用onDestroy()
(可能在onStop()
之后调用。)