首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Doze模式下带锁锁的setExactAndAllowWhileIdle

Doze模式下带锁锁的setExactAndAllowWhileIdle
EN

Stack Overflow用户
提问于 2022-03-21 02:35:36
回答 2查看 518关注 0票数 1

似乎有一些与主题相关的问题,但我没有找到明确的是/否的答案。

我有一个前台服务,它调用setExactAndAllowWhileIdle来启动BroadcastService。下面是广播接收器中的代码。

代码语言:javascript
复制
public class StepCountUpdaterAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    PowerManager powerManager = (PowerManager) context.getSystemService(POWER_SERVICE);
    PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myExampleApp::UpdateSteps");
    wakeLock.acquire(3);

    StepCounterHandler handler = StepCounterHandler.getInstance();
    new TaskRunner().executeAsync(
            new SetStepsForDay(SaveSharedPreference.getMemberId(context),
                    handler.getCumulativeSteps()),result -> {

                handler.setAlarm(context);

                if(isTimeToReset())
                    handler.resetStepsCounter();
            });

    wakeLock.release();
}

setExactAndAllowWhileIdle 文档中,它声明:

当警报发出时,该应用程序还将被添加到系统的临时电源豁免列表中,大约10秒,以便该应用程序能够获得更多的唤醒锁,从而完成其工作。

但是在Doze模式文档中,它将此声明为一种限制:

系统忽略唤醒锁。

这是否意味着在由setExactAndAllowWhileIdle在Doze模式下发出的警报所提供的10秒窗口中获得3分钟的部分唤醒锁将是有效的,还是会正常工作?

在我的例子中,广播接收器将通过异步任务向我的远程服务器发送数据,然后它将再次设置警报并重置我的步骤计数器。这会起作用吗?如果不行的话,我在打瞌睡模式下发送网络请求并执行后续代码的替代方案是什么?

编辑:通过调试我的应用程序测试显示,当迫使设备进入空闲模式时,我仍然可以访问网络,并且可以将数据发送到我的服务器。Doze模式文档说明了如何强制应用程序进入空闲状态,我确信这是午睡模式的同义词。然而,这应该是一个限制,所以我不知道这是如何运作的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-21 04:37:14

是的,杜兹会忽略你的睡梦。然而,使用setExactAndAllowWhile Idle,您将在正确的时间完成工作,并且您将有那个10s窗口来进行任何您想要的处理。

票数 1
EN

Stack Overflow用户

发布于 2022-03-21 05:25:10

如果设备处于Doze模式,WakeLock不会对您有多大帮助。如果您使用了AlarmManager.ELAPSED_REALTIME_WAKEUPAlarmManager.RTC_WAKEUP作为警报type,则AlarmManager.RTC_WAKEUP会唤醒您的设备。

然而,从安卓12你需要SCHEDULE_EXACT_ALARM的许可来设置准确的警报。如果你打算向PlayStore发布这个应用程序,就会有一些设置精确警报的可接受用例。确保您的应用程序符合这些政策。

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

https://stackoverflow.com/questions/71552249

复制
相关文章

相似问题

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