我在android上开发时遇到了这种奇怪的行为,在我的google上,我唯一能找到的答案是,这是设计的,我不应该在意它。
我的应用程序在活动时获取位置数据,我正准备通过在调用onpause事件时停止位置更新,然后在调用onresume事件时恢复获取来实现一种保存电池的方法。
在调试时,我注意到在锁定手机时出现了这种奇怪的行为,onpause->onresume会被一个接一个地调用三次或更多次,然后以onstop事件结束。
我唯一能找到的答案是:安卓就是这样工作的,别客气。
我想我很好奇,能不能有人解释一下,我需要停下来,重新开始一个简单的子活动几次?这难道不会消耗更多的电池,尤其是对于那些在onresume中有严重代码的大型活动?
有办法防止这种情况发生吗?
我很高兴知道至少我在这些事件中的代码没有被调用,也许有一个if{}块防止了不必要的cpu周期。
任何洞察都是非常感激的!
最佳答案
您必须注册广播接收器以处理“屏幕超时”和“屏幕锁定”事件。
你只要停止数据检索。
示例代码:
public class ScreenReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
//screen locked, do here
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
//screen unlocked, do something here
}
}
}
您需要将这个ScreenReceiver类的广播接收器注册到androidmenifest.xml