所以我刚刚意识到,当点击电源按钮关闭屏幕时,onStop在我的活动中被调用了。以前只有onPause被调用。这是否是KitKat的更改,是否有任何地方的注释(这是有意的)?这是一项KitKat更改,还是特定制造商实现的?
编辑:我很快就会用更多的信息来更新它。我认为这种变化比我最初意识到的要微妙得多,可能是因为我持有部分唤醒锁或监听GPS更新。无论如何,我所知道的是,在我的代码中,在KitKat之前,单击电源按钮时没有调用onStop。也许这也是设备依赖的。
编辑:新信息。使用以下设置,单击power按钮时不会调用onStop():Android和targetSDKVersion=8 (如果使用Android,也可以设置compileSdkVersion=8 )。在两个设备(运行KitKat和JellyBean)上验证了这一点,因此这个问题不是最初提到的KitKat,而是min,目标sdk设置。Bounty将被授予给任何能够找到它何时更改的引用的人,或者至少显示第一个min/目标sdk设置,该设置改变了从电源按钮单击调用onStop的行为。
发布于 2014-08-26 04:10:32
生命周期中的变化来自蜂窝,或者当将一个针对sdk 10或更低的应用程序更改为以sdk 11或更高为目标的应用程序时。
如果Android项目声明的targetSDKversion为10或更少,则当单击电源按钮时,调用onPause,即,而不是onStop。这与许多人的想法相反。但是,如果targetSDKversion = 11或更高,则单击电源按钮时将调用onPause,然后调用onStop。
应该注意的是,在一些文档中,它声明onStop将被“当该活动不再对用户可见时被调用,,因为另一个活动已经恢复,并且正在覆盖这个活动。”但在许多其他地方,它只是简单地声明,只要当前活动不再可见,就会调用onStop。因此,在SDK 11之前,power按钮单击可能是有意调用onPause的,因为没有其他活动覆盖当前的活动。屏幕干脆关掉了。然后,使用蜂巢,他们改变了实现,以匹配其他解释(不再可见)。
发布于 2014-08-19 14:24:23
海事组织,Kitkat和这件事无关。当您的活动不再对用户可见时,将调用onStop()。当您的屏幕关闭(例如,当您按下电源按钮锁定屏幕),onPause()将首先被调用。然后,应该调用onStop()。但是,它确实取决于设备的内存状况。如果您使用的内存较低,无法提供足够的内存来保持活动的进程运行,则可能不会调用onStop()。您可能会看到,在这种情况下只调用onPause()。参考:http://developer.android.com/reference/android/app/Activity.html#onStop()
发布于 2014-08-19 17:02:58
我已经试着调查这个问题有一段时间了。我已经提出了一些资源,可以帮助解释生命周期中的变化。随着新的KitKat更新,似乎他们引入了一些低端电源管理,在这两个网站这里和这里。
没有具体说明这就是为什么你要经历生命周期的变化,但是如果Android现在自动尝试创建一个“更精简”的环境,它可能会迫使应用程序在释放资源时调用onStop()。
我知道这不是一个确切的答案,但我希望这会有所帮助。我同意,这并不总是这样的,你肯定会在这里发现一些有趣的事情。
https://stackoverflow.com/questions/24887560
复制相似问题