我刚刚开发了一个屏幕保护程序应用程序,我在其生命周期中发现了一个奇怪的行为。
我的工作流程是这样的:
- 开始我的
RegisterService
,我打电话的地方registerReceiver
方法来注册一个BroadcastReceiver
,可以接收ACTION_SCREEN_OFF
.
2.在onReceive
这个方法BroadcastReceiver
,我启动一个活动作为屏幕保护程序。
3.在活动中,我写了Log.i()
语句来跟踪其运行情况。
我的问题是:
当屏幕超时,或者当我按下POWER键时,屏幕关闭,系统将发送ACTION_SCREEN_OFF消息。正如我所料,我的接收器启动了屏幕保护程序活动。但是,我发现这个 Activity 调用onCreate()
, onResume()
, onPause()
, onResume()
根据logcat中的输出顺序。
It seems as if some a activity comes at front of my screensaver and finishes immediately, so my screensaver calls onPause()
and then onResume()
.
任何想法?这个问题对我的编程造成了阻碍,请帮忙。谢谢!
基于对以下内容的简要研究PowerManagerService.java https://github.com/android/platform_frameworks_base/blob/master/services/java/com/android/server/PowerManagerService.java在源代码中,当需要关闭屏幕时,系统会启动一个动画(请查看类源代码的第 2183 行)来执行此操作。这意味着您的活动将暂停,然后在动画结束后恢复。
我不能 100% 确定这一点,因为我还没有在我的环境中测试过它,但这是我为您的情况找到的唯一合乎逻辑的解释。
希望这可以帮助...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)