活动生命周期 - 需要区分暂停原因

时间:2013-03-31 08:35:29

标签: android android-activity activity-lifecycle

我正在开发2.2.2上的应用程序,并且当屏幕空白,用户按下“主页”等时需要采取某些操作。

大多数情况都很好:当屏幕空白时,调用onPause(),然后在空白上调用onResume(),如果按下home,则调用onPause(),onStop()等。

然而,对于主要活动来说,这一切都是正确的,它似乎不适用于从启动活动开始的次要活动。

屏幕空白/ unblank按预期工作,但是在'home'键上只调用onPause(),而不是onStop(),然后重新启动应用程序会导致onResume()。

也就是说,我无法区分这个辅助活动的屏幕空白和返回主屏幕之间的区别,我需要,原因是我需要在返回主页时执行某些操作,但不能在屏幕上执行空白。

我该怎么做才能找到答案?

2 个答案:

答案 0 :(得分:0)

捕捉主页按钮事件无法完成,这是故意的,因此您将无法阻止它。

如果您坚持捕获它,则需要将您的应用设置为启动器,而不是简单的应用。

至于其他事件,你需要知道许多方法只会告诉你发生了什么但不是它们的触发器。

为此你必须自己解决这个问题。

例如,如果你去了另一个活动,你可以将它存储在一个标志中,表明你已经去了另一个活动。如果您需要知道您已从第二个活动返回到第一个活动,则应使用startActivityForResult开始第二个活动,然后您将检查结果(并在第二个活动上设置)。

如果您想避免切换活动,请考虑使用片段。

不过,您可能还想查看方法onWindowFocusChanged

答案 1 :(得分:0)

实际上,最好的方法是使用onUserLeaveHint()。当按下Home时,这会从辅助活动调用 - 至少在API级别8上。