0

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

大部分都很好:当屏幕空白时,onPause() 被调用,然后 onResume() 在 unblank 上,如果按下 home,它会继续 onPause()、onStop() 等。

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

屏幕空白/取消空白按预期工作,但是在“主页”键按下时,仅调用 onPause(),而不调用 onStop(),然后重新启动应用程序会导致 onResume()。

即,我无法从这个辅助活动中区分屏幕空白和返回主屏幕之间的区别,我需要这样做,原因是我需要在返回家时执行某些操作,而不是在屏幕空白上执行某些操作。

我能做些什么来找出答案?

4

2 回答 2

0

捕获主页按钮按下事件不能像那样完成,这是故意的,因此您将无法阻止它。

如果您确实坚持要捕获它,则需要使您的应用程序成为启动器,而不是简单的应用程序。

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

为此,您必须自己弄清楚。

例如,如果您参加了另一项活动,则可以将其存储在表明您已参加另一项活动的标志中。如果您需要知道您已从第二个活动返回到第一个活动,则应使用startActivityForResult启动第二个活动,稍后您将检查结果(并将其设置在第二个活动上)。

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

顺便说一句,您可能还想查看onWindowFocusChanged方法。

于 2013-03-31T08:56:47.777 回答
0

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

于 2013-04-07T06:49:18.367 回答