Android NotificationListenerService 后台执行限制/Doze
Android NotificationListenerService Background execution limit / Doze
随着在 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。
None 它们在设备深度睡眠时工作。
附带说明一下,我的设备是华为 Mate 10 Pro。他们以积极的任务管理而闻名。但是我已经将我的应用程序列入白名单,禁用了所有可以从华为方面禁用的功能,这些功能会在后台杀死应用程序。
关于我如何在设备打瞌睡时调用 AsyncTask 的任何建议(相对于 Google 的维护规则 windows,我知道在打瞌睡 Google 下延迟网络请求,wake locks等等。我只想在Google允许的时候执行网络请求。
事实证明这不是打瞌睡/后台执行限制。
Android O 中存在错误,或者华为正在执行一些激进的任务管理,导致侦听器断开连接。
我添加了一些在执行 onDisconnected() 时侦听的通知。
在我的 Android 8.0 设备(Huawei Mate 10 Pro)上,onDisconnected() 会在几分钟后执行。然而,在我的 运行 Android 7.0 平板电脑上,监听器在长时间后断开连接的次数很少,但它会立即自动重新绑定并执行 onConnected()。
目前我还没有明确指出是Android还是华为。
随着在 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。 None 它们在设备深度睡眠时工作。
附带说明一下,我的设备是华为 Mate 10 Pro。他们以积极的任务管理而闻名。但是我已经将我的应用程序列入白名单,禁用了所有可以从华为方面禁用的功能,这些功能会在后台杀死应用程序。
关于我如何在设备打瞌睡时调用 AsyncTask 的任何建议(相对于 Google 的维护规则 windows,我知道在打瞌睡 Google 下延迟网络请求,wake locks等等。我只想在Google允许的时候执行网络请求。
事实证明这不是打瞌睡/后台执行限制。 Android O 中存在错误,或者华为正在执行一些激进的任务管理,导致侦听器断开连接。
我添加了一些在执行 onDisconnected() 时侦听的通知。 在我的 Android 8.0 设备(Huawei Mate 10 Pro)上,onDisconnected() 会在几分钟后执行。然而,在我的 运行 Android 7.0 平板电脑上,监听器在长时间后断开连接的次数很少,但它会立即自动重新绑定并执行 onConnected()。
目前我还没有明确指出是Android还是华为。