Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android NotificationListenerService后台执行限制/打盹_Android_Background_Alarmmanager_Notification Listener_Doze - Fatal编程技术网

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

随着Android中Doze的引入,M和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和normal IntentService。 当设备深度睡眠时,它们都不工作

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


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

结果表明,这不是打瞌睡/后台执行限制。 要么安卓系统存在漏洞,要么华为正在进行一些激进的任务管理,导致侦听器断开连接

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

到目前为止,我还没有明确的迹象表明是安卓还是华为