如何区分后退按钮和主页按钮按下

时间:2014-08-13 11:02:48

标签: android android-fragments android-navigation

当我的应用开始时,有一个开始按钮。用户可以启动一个不能忽略设置时间的片段。当用户按下这个片段时,他的意图是保留片段,因此释放资源是明智的。然而,当他按下家(硬件家)时,他的意图可能是检查一些东西并回来。在这种情况下,我想保留数据(不可序列化)。如何区分这两种情况?

1 个答案:

答案 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()之后调用。)