在Android中,如何检测我的活动恢复原因?

时间:2010-08-24 22:43:22

标签: android android-intent android-lifecycle

我正在开发一个可以执行自己的状态管理的Activity。我试图区分以下onResume案例:

  1. 新推出
  2. 任务切换(主页按钮长按)
  3. 在同一申请中的其他活动之后恢复
  4. 睡觉后醒来
  5. 方向改变
  6. 活动的意图或其他地方是否有某些东西可以帮助我区分这些?

    对于好奇和一些背景......我想保留我的内部历史堆栈4& 5.案例2& 3,我会保留相同的当前页面,但擦除历史记录(允许正常的后退按钮功能在此时接管)。案例1将初始化为活动的内部起始页面(并且可以在onCreate的帮助下轻松检测到)。

1 个答案:

答案 0 :(得分:1)

  

活动的意图或其他地方是否有某些东西可以帮助我区分这些?

第4项与onResume(),AFAIK无关。

项目#5可以通过android:configChangesonConfigurationChange()更好地处理,但您可以通过从onRetainNonConfigurationInstance()返回内容并在onResume()中查看它是否存在来“检测”它通过getLastNonConfigurationInstance()

其他人不仅仅是三个案例,而且可能是其中的两倍,一旦你开始考虑诸如“被释放内存以释放RAM”这样的事情作为一种可能性。

关闭袖口,感觉就像你做了一些不幸的架构决定(“内部历史堆栈......擦除历史......允许正常的后退按钮功能在那时接管”)。 Android是围绕许多廉价活动设计的,你似乎违反了这个规则。我们欢迎您这样做,但请记住,Android对您所选模式的支持可能有限。