首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点击电源按钮现在调用onStop在Android KitKat上活动,以前是onPause吗?

点击电源按钮现在调用onStop在Android KitKat上活动,以前是onPause吗?
EN

Stack Overflow用户
提问于 2014-07-22 12:33:46
回答 5查看 3K关注 0票数 5

所以我刚刚意识到,当点击电源按钮关闭屏幕时,onStop在我的活动中被调用了。以前只有onPause被调用。这是否是KitKat的更改,是否有任何地方的注释(这是有意的)?这是一项KitKat更改,还是特定制造商实现的?

编辑:我很快就会用更多的信息来更新它。我认为这种变化比我最初意识到的要微妙得多,可能是因为我持有部分唤醒锁或监听GPS更新。无论如何,我所知道的是,在我的代码中,在KitKat之前,单击电源按钮时没有调用onStop。也许这也是设备依赖的。

编辑:新信息。使用以下设置,单击power按钮时不会调用onStop():Android和targetSDKVersion=8 (如果使用Android,也可以设置compileSdkVersion=8 )。在两个设备(运行KitKat和JellyBean)上验证了这一点,因此这个问题不是最初提到的KitKat,而是min,目标sdk设置。Bounty将被授予给任何能够找到它何时更改的引用的人,或者至少显示第一个min/目标sdk设置,该设置改变了从电源按钮单击调用onStop的行为。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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的,因为没有其他活动覆盖当前的活动。屏幕干脆关掉了。然后,使用蜂巢,他们改变了实现,以匹配其他解释(不再可见)。

票数 5
EN

Stack Overflow用户

发布于 2014-08-19 14:24:23

海事组织,Kitkat和这件事无关。当您的活动不再对用户可见时,将调用onStop()。当您的屏幕关闭(例如,当您按下电源按钮锁定屏幕),onPause()将首先被调用。然后,应该调用onStop()。但是,它确实取决于设备的内存状况。如果您使用的内存较低,无法提供足够的内存来保持活动的进程运行,则可能不会调用onStop()。您可能会看到,在这种情况下只调用onPause()。参考:http://developer.android.com/reference/android/app/Activity.html#onStop()

票数 0
EN

Stack Overflow用户

发布于 2014-08-19 17:02:58

我已经试着调查这个问题有一段时间了。我已经提出了一些资源,可以帮助解释生命周期中的变化。随着新的KitKat更新,似乎他们引入了一些低端电源管理,在这两个网站这里这里

没有具体说明这就是为什么你要经历生命周期的变化,但是如果Android现在自动尝试创建一个“更精简”的环境,它可能会迫使应用程序在释放资源时调用onStop()。

我知道这不是一个确切的答案,但我希望这会有所帮助。我同意,这并不总是这样的,你肯定会在这里发现一些有趣的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24887560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档