Android NotificationListenerService后台执行限制/打盹
随着Android中Doze的引入,M和Android在Doze期间的后台执行变得越来越严格。 有人能详细说明一下,在扩展Android自己的服务时,是否也适用同样的情况吗。 例如NotificationListenerService 我就是这么用的Android NotificationListenerService后台执行限制/打盹,android,background,alarmmanager,notification-listener,doze,Android,Background,Alarmmanager,Notification Listener,Doze,随着Android中Doze的引入,M和Android在Doze期间的后台执行变得越来越严格。 有人能详细说明一下,在扩展Android自己的服务时,是否也适用同样的情况吗。 例如NotificationListenerService 我就是这么用的 public class ListenForNotificationsService extends NotificationListenerService { private String TAG = this.getClass().getS
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和normal IntentService。
当设备深度睡眠时,它们都不工作
另外,我的设备是华为Mate 10 Pro。他们以积极的任务管理而闻名。但我已经将我的应用程序列入了白名单,禁用了华为方面所有可以禁用的程序,这些程序会在后台关闭应用程序
关于如何在设备打瞌睡时调用AsyncTask的任何建议(相对于Google关于维护窗口的规则,我知道在打瞌睡时Google会延迟网络请求、唤醒锁定等。我只希望在Google允许的情况下执行网络请求)。结果表明,这不是打瞌睡/后台执行限制。 要么安卓系统存在漏洞,要么华为正在进行一些激进的任务管理,导致侦听器断开连接 我添加了一些在onDisconnected()执行时侦听的通知。 在我的Android 8.0设备(华为Mate 10 Pro)上,onDisconnected()在几分钟后执行。然而,在我运行Android 7.0的平板电脑上,侦听器在长时间运行后很少断开连接,但它会立即自动重新绑定,并执行onConnected() 到目前为止,我还没有明确的迹象表明是安卓还是华为