gpt4 book ai didi

android - 安卓手机锁屏导致后续的几个onPause/onResume事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:02:19 26 4
gpt4 key购买 nike

我在 Android 上开发时遇到了这种有点奇怪的行为,在我谷歌搜索期间,我能找到的唯一答案是这是设计使然,我不应该关心它。

我的应用程序在 Activity 时获取位置数据,我打算通过在调用 onPause 事件时停止位置更新来实现一种节省电池电量的方法,然后在调用 onResume 事件时恢复获取。

在调试时,我注意到锁定手机时出现了这种奇怪的行为,onPause->onResume 接连被调用了 3 次或更多次,然后以 onStop 事件结束。我能找到的唯一答案是:Android 就是这样工作的,没关系。

我想我很好奇,有人可以向我解释多次停止和恢复简单子(monad) Activity 的必要性吗?这不会消耗更多电池,尤其是对于 onResume 中有严重代码的大型 Activity 吗?有没有办法防止这种情况发生?如果知道至少我在这些事件中的代码没有被调用,我会很高兴,也许有一个 if{} block 可以防止不必要的 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

关于android - 安卓手机锁屏导致后续的几个onPause/onResume事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com