打盹模式可以使用谷歌的Geofence示例应用程序

时间:2017-06-12 17:26:24

标签: android android-geofence android-doze

我有一个使用Geofence的Android应用程序,我很难克服Doze模式。我的清单具有WAKE_LOCK权限,并且每个区域有7个setNotificationResponsiveness为0。我甚至将PendingIntent更改为BroadcastReceiver,但该应用程序确实在已删除的智能手机屏幕上休眠或死了一段时间。我已经尝试过使用LocationRequest

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

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

3 个答案:

答案 0 :(得分:0)

我在“聊天”应用程序和“位置跟踪”应用程序中遇到了问题,在打盹模式下我们无法获得任何推送,或者我们无法获得任何网络连接或位置详细信息,因为电池会阻止大部分后台操作优化,我们可以通过两种方式解决。

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

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

答案 1 :(得分:0)

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

使用Doze模式对我有用的方式:

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

On Activity onResume释放WakeLock,服务停止,STOPFOREGROUND_ACTION意图,服务本身调用stopForeground& stopSelf。

答案 2 :(得分:0)

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