1

我有一个使用地理围栏的 android 应用程序,我很难克服打瞌睡模式。我的清单具有 WAKE_LOCK 权限,并且每个区域的七个 setNotificationResponsiveness 为 0。我什至将 PendingIntent 更改为 BroadcastReceiver,但应用程序在删除智能手机屏幕后确实会休眠或死机。我已经尝试过使用 LocationRequest

LocationRequest.setFastestInterval(1000);
LocationRequest.setInterval(2000);

即便如此,我也没有成功。有没有人设法让应用程序与 Doze 一起运行?

4

3 回答 3

0

清单中的 WAKE_LOCK 权限不足以使用 Wake Lock ,您需要在代码中获取和释放锁,但从 Android 6 打盹模式开始,它也会进入深度睡眠,并获得获得的 wake_lock。

打瞌睡模式也适用于我:

在主活动 onStop 中,我获得了部分唤醒锁,并以 STARTFOREGROUND_ACTION 意图启动了一个服务,该服务调用 startForeground 并显示一个通知。

在 Activity onResume 上,WakeLock 被释放,服务以 STOPFOREGROUND_ACTION 意图停止,服务本身调用 stopForeground 和 stopSelf。

于 2017-06-12T17:52:55.133 回答
0

我在我的聊天应用程序和位置跟踪应用程序中遇到了问题,在打盹模式下我们不会收到任何推送,或者我们不会获得任何网络连接或位置详细信息,并且由于电池优化,大部分后台操作将被阻止,我们可以通过2种方式解决。

  1. 优先推送消息(我在我的聊天应用程序中使用) - 如果您发送正常推送,直到手机恢复正常,它才会到达应用程序,如果您发送优先推送它将到达应用程序,您可以在几秒钟内完成一些处理,但是这也有一些限制。

  2. 前台服务, - 对于您的场景,这是最好的解决方案,您应该有服务并且该服务应该作为前台服务运行,这样您即使在打盹模式下也可以随时获取位置信息。

于 2017-06-12T17:46:11.363 回答
0

我最终让我的应用程序接收推送消息。显然,该应用程序不再被操作系统杀死。

于 2017-06-20T16:41:14.183 回答