首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓NotificationListenerService后台执行限制/ Doze

安卓NotificationListenerService后台执行限制/ Doze
EN

Stack Overflow用户
提问于 2018-04-03 05:26:14
回答 1查看 706关注 0票数 1

随着Doze在Android和Android中的引入,对Doze过程中后台执行的限制越来越多。在扩展Android自身的服务时,是否有人会详细说明同样的事情是否适用。比如NotificationListenerService?

我就是这样用它的

代码语言:javascript
复制
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());
    }
  }
}

当设备进入Doze时,它在几分钟后停止工作。我试过使用AlarmManager,JobScheduler,JobIntentService和普通IntentService。当设备沉睡时,它们都不起作用。

顺便提一下,我的设备是华为的Mate 10 Pro。他们以积极的任务管理而闻名。但我已经将我的应用程序白化了,禁用了华为方面的所有可以禁用的功能,而这些功能在后台杀死了应用程序。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-05 10:51:48

结果发现这不是Doze /后台执行限制。无论是Android中存在一个bug,还是华为正在进行一些激进的任务管理,都会导致侦听器断开连接。

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

到目前为止,我还没有明确的迹象表明这是Android还是华为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49622813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档