【发布时间】:2011-01-25 02:03:07
【问题描述】:
有没有办法从主屏幕/启动器判断一个 Activity 是否正在恢复(即调用 onResume)?
例如,如果我有一个包含两个活动 A 和 B 的应用程序。
场景 1: Activity A 上的某些用户操作将调用 Activity B,将其带到前台 - 将 Activity A 移动到后台。当 Activity A 进入后台时,它会通过 onPause() 和 onStop()。用户(现在在 Activity B 上)要么完成 Activity,要么点击“返回”按钮,将 Activity A 带回前台,导致 onRestart()、onStart()、onResume() 序列。
场景 2: 如果用户在 Activity A 处于前台时点击“主页”按钮,然后从启动器重新调用应用程序,它会经历与场景 1 中相同的生命周期。即用户点击“主页”按钮。活动通过 onPause() 和 onStop()。用户再次启动应用程序,导致 Activity A 回到前台,再次经历与场景 1 相同的 onRestart()、onStart()、onResume() 序列。
据我所知,Activity 无法知道它是如何恢复的,它只知道它正在重新进入视野。事实上,我有一种感觉,在 Android 中并没有真正意义上的“应用程序”概念——从某种意义上说,它只有一个入口和出口点。
【问题讨论】:
-
啊。实际上,我正在尝试跟踪应用程序启动的数量 - 但到目前为止还没有找到一种方法来区分不同的 onRestart() 场景。
-
请记住,除了使用主页按钮之外,还有其他情况会恢复活动。当用户接到电话,系统杀死你的应用程序,然后恢复它时,它是一个新的应用程序启动吗?我认为跟踪应用程序中的交互会更好,而不是“启动”,但这是定义的。
-
是的,我知道这些其他简历场景。即使我最终选择的方法(“singleTask”)也会在您切换任务时注册一个额外的“启动” - 例如拨打或接听电话。这意味着我会多算一点,但它似乎比通过增加 onCreate 或 really 在所有 onResume() 调用上过度计数来减少计数要好。
标签: android