我刚刚开发了一个屏幕保护程序应用程序,我在其生命周期中发现了一个奇怪的行为.
我的工作流程是这样的:
我的工作流程是这样的:
>启动我的RegisterService,我在其中调用registerReceiver方法来注册BroadcastReceiver,它可以接收ACTION_SCREEN_OFF.
2.在这个BroadcastReceiver的onReceive方法中,我启动一个活动作为屏幕保护程序.
3.在活动中,我编写Log.i()语句来跟踪其运行情况.
我的问题是:
当屏幕超时或按POWER键时,屏幕关闭,系统将发送ACTION_SCREEN_OFF消息.正如我所料,我的接收器启动屏幕保护程序活动.但是,我发现这个Activity依次根据logcat中的输出调用onCreate(),onResume(),onPause(),onResume().
似乎有些活动出现在我的屏幕保护程序前面并立即完成,因此我的屏幕保护程序调用onPause()然后调用onResume().
任何的想法?这个问题困扰我编程,请帮忙.谢谢!
解决方法
基于对
PowerManagerService.java源代码的简要研究,当关闭屏幕时,系统会启动动画(查看类源的第2183行)来执行此操作.这意味着您的活动将暂停,然后在动画结束后恢复.
我不能100%肯定这一点,因为我没有在我的环境中测试它,但这是我找到的唯一合理的解释.
希望这可以帮助…