我有一个应用程序可以监听电话通知并通过MessageApi
. 除了一些搭载 Android 6 的设备,尤其是华为 Mate 8(看起来所有的华为 Android 6 都这样做),一切都运行良好。
华为有自己的冻结应用程序后台处理(受保护的应用程序)的实现。从用户报告中,我确认我的应用在华为受保护的应用和 Android 6 的打瞌睡模式下都有异常。该应用程序运行正常,但在显示关闭 15 分钟后,我的应用程序停止向连接的 Android Wear 手表发送消息。我的应用程序还可以记录收到的通知历史记录,15 分钟后什么都没有收到……直到手机显示屏打开并打开我的应用程序。之后,在手机显示屏关闭时本应到达的所有通知都会立即到达我的NotificationListenerService
实现并发送到手表。这也被记录的历史所证实。
任何想法如何为这些手机解决这个问题,尤其是带有打瞌睡模式的 Android 6 的华为 Mate 8?
NotificationListenerService
设备处于打盹模式和/或应用程序处于待机模式时的正确行为是什么?
编辑
用户还确认他们的手机没有处于省电模式,这也会影响后台应用程序及其服务。这个错误看起来像是华为独有的,因为没有 Nexus 用户报告过这个问题,而我的 OnePlus One with M 也没有这样做。N 预览也适用于 Nexus 设备。
编辑 2
我添加了一个可选的前台服务startForeground()
(对于前台服务通知,我使用了优先级NotificationCompat.PRIORITY_MIN
并添加了Notification.FLAG_ONGOING_EVENT
标志。这对华为手机有点帮助,但作用不大,现在延迟通知NotificationListenerService
在屏幕打开后立即到达我的应用程序后。我不在startForeground()
我的NotificationListenerService
但在另一个中使用,Service
因为我无法控制它的生命周期。