我有一个应用程序可以监听电话通知并通过
华为有自己的冻结应用程序后台处理的实现(受保护的应用程序)。从用户报告中,我确认我的应用程序在华为的保护应用程序和安卓6的Doze模式下有一个例外。应用程序正常工作,但在关闭显示15分钟后,我的应用程序就停止向连接的Android Wear手表发送消息。我的应用程序还可以记录接收到的通知历史记录,而在15分钟内没有任何通知到达......直到手机的显示屏亮起并且我的应用程序打开。之后,所有应该在手机的显示屏关闭期间到达的通知都进入我的
有什么想法可以为这些手机解决这个问题,特别是具有Doze模式的华为Mate 8?
当设备处于Doze模式和/或应用程序处于待机模式时,
编辑
用户还确认他们的手机没有处于省电模式,这也会影响后台应用程序及其服务。这个错误看起来是华为专属的,因为没有Nexus用户报告此问题,我的OnePlus One与M也没有这样做。而且,在N预览版中,Nexus设备工作得很好。
编辑2
我已添加了可选前台服务(
MessageApi
向Android Wear手表发送消息。除了一些安卓6设备(尤其是华为 Mate 8,貌似所有华为安卓6的设备都会这样),一切正常。华为有自己的冻结应用程序后台处理的实现(受保护的应用程序)。从用户报告中,我确认我的应用程序在华为的保护应用程序和安卓6的Doze模式下有一个例外。应用程序正常工作,但在关闭显示15分钟后,我的应用程序就停止向连接的Android Wear手表发送消息。我的应用程序还可以记录接收到的通知历史记录,而在15分钟内没有任何通知到达......直到手机的显示屏亮起并且我的应用程序打开。之后,所有应该在手机的显示屏关闭期间到达的通知都进入我的
NotificationListenerService
实现并一次性发送到手表。这也通过记录的历史得到了证实。有什么想法可以为这些手机解决这个问题,特别是具有Doze模式的华为Mate 8?
当设备处于Doze模式和/或应用程序处于待机模式时,
NotificationListenerService
的正确行为是什么?编辑
用户还确认他们的手机没有处于省电模式,这也会影响后台应用程序及其服务。这个错误看起来是华为专属的,因为没有Nexus用户报告此问题,我的OnePlus One与M也没有这样做。而且,在N预览版中,Nexus设备工作得很好。
编辑2
我已添加了可选前台服务(
startForeground()
),因此我的应用程序在通知中心具有永久通知,因此我的应用程序应该从每个电池优化中排除。对于前台服务通知,我使用了NotificationCompat.PRIORITY_MIN
的优先级,并添加了Notification.FLAG_ONGOING_EVENT
标志。这在华为手机上有所帮助,但作用不大,现在延迟的通知在打开屏幕后立即进入我的NotificationListenerService
,而不是在打开我的应用程序后。我没有在我的NotificationListenerService
中使用startForeground()
,而是在另一个Service
中使用,因为我无法控制它的生命周期。