gpt4 book ai didi

Android NotificationListenerService 后台执行限制/Doze

转载 作者:行者123 更新时间:2023-11-29 18:57:52 29 4
gpt4 key购买 nike

随着 Android M 中 Doze 的引入,Android 在 Doze 期间对后台执行的限制越来越多。有人可以详细说明在扩展 Android 自己的服务时是否同样适用。比如NotificationListenerService?

我是这样用的

public class ListenForNotificationsService extends 
NotificationListenerService {

private String TAG = this.getClass().getSimpleName();

@Override
public void onNotificationPosted(StatusBarNotification sbn) {

Log.d(TAG, "Notification received");
// Do AsyncTask() for network request
}

@Override
public void onNotificationRemoved(StatusBarNotification sbn) {

if (sbn.getPackageName() != null) {

Log.d(TAG, "Notification removed:" + sbn.getPackageName() + ":" + sbn.getId());
}
}
}

当设备进入打瞌睡状态几分钟后,它会停止工作。我尝试过使用 AlarmManager、JobScheduler、JobIntentService 和普通的 IntentService。当设备深度 sleep 时,它们都不起作用。

附带说明一下,我的设备是华为 Mate 10 Pro。他们以积极的任务管理而闻名。但是我已经将我的应用程序列入白名单,禁用了所有可以从华为方面禁用的功能,这些功能会在后台关闭应用程序。

关于我如何在设备打瞌睡时调用 AsyncTask 的任何建议(相对于谷歌关于维护窗口的规则,我知道在打瞌睡谷歌推迟网络请求、唤醒锁等。我只希望网络请求在 Google 允许时执行)。

最佳答案

原来这不是打瞌睡/后台执行限制。要么 Android O 中存在错误,要么华为正在执行一些激进的任务管理,导致监听器断开连接。

我添加了一些通知,用于在执行 onDisconnected() 时进行监听。在我的 Android 8.0 设备(Huawei Mate 10 Pro)上,onDisconnected() 会在几分钟后执行。然而,在我运行 Android 7.0 的平板电脑上,监听器在长时间后断开连接的次数很少,但它会立即自动重新绑定(bind)并执行 onConnected()。

目前我还不清楚是安卓还是华为。

关于Android NotificationListenerService 后台执行限制/Doze,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49622813/

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