gpt4 book ai didi

android - 打瞌睡时在后台运行应用程序

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

应用程序正在运行 SDK 23 及更高版本。在完成任务并使用 AlaramManager (setExactAndAllowWhileIdle) 安排下一个任务后,我正在使用服务运行一些任务。这工作正常。如果手机连续闲置 2 或 3 天,则会进入打瞌睡模式。打瞌睡模式后,应用程序失去网络和唤醒锁也无法正常工作。

有没有办法,即使手机打瞌睡,我们也可以在有任何网络干预问题的情况下运行该应用程序。我试图保留该应用程序白名单,但我需要设备获得 root 权限。

adb shell dumpsys deviceidle whitelist +<Package Name>

谁能建议我不间断运行应用程序的最佳方式?

最佳答案

实际上,如果不运行前台服务,就无法做到这一点。列入白名单可能不适合您的应用程序,即使它适合您,您也要求用户授予您许可,从最终用户的角度来看,这可能被视为危险的事情。

但是,我有一个技巧。收听 android 的广播,当您发现该设备将进入打瞌睡模式时,启动前台服务。在大多数情况下,用户将无法看到您的前台通知图像,也不知道您正在运行服务。因为设备处于打瞌睡模式,这意味着它在用户不看的地方是稳定的。所以你可以做任何需要做的事情。

您还可以收听打瞌睡模式结束时发送的广播。发生这种情况时,请停止您的前台服务并按照您的正常逻辑与警报管理器一起工作。

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(intent.getAction().equals("android.os.action.DEVICE_IDLE_MODE_CHANGED")){
if (pm.isDeviceIdleMode()) {
startForegroundService();
//stopAlarmManagerLogic();
} else {
stopForegroundService();
//startAlarmManagerLogic();
return;
}
return;
}
}

关于android - 打瞌睡时在后台运行应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43508748/

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