2017-06-12 102 views
0

我有一个使用地理栅栏,我有一个很难克服的打盹模式Android应用程序。我的清单拥有WAKE_LOCK权限并且每个区域都有7个setNotificationResponsiveness为0。我甚至将PendingIntent更改为BroadcastReceiver,但应用程序在删除智能手机屏幕后经过一段时间就会睡觉或死亡。我已经尝试使用LocationRequest打盹模式睡谷歌的地理栅栏示例应用程序

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

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

回答

0

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

0

我所面临的问题,在我的聊天应用和定位跟踪应用程序,而在休眠模式下,我们不会得到任何推动,否则我们不会得到任何网络连接或位置的详细信息和大部分后台操作将被阻止,因为电池优化,我们可以通过2种方式解决。

  1. 优先推送消息(我在聊天应用程序中使用) - 如果你发送普通推也不会达到应用程序,直到移动来正常的,如果发送优先推将达到你能做的应用一些过程在几秒钟内完成,但这也有一定的局限性。

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

+0

你有一个样品(前台服务)项目2?我一直在研究这个问题并试图构建这个解决方案。但是我的方案并不知道我是否做错了或不符合设计。我有一个GPS上课的时候地理围栏事件发生时都在设备的在此位置的位置,这使得对服务器的调用来确定栅栏区域已经被激活和设备的位置。 – user6505882

+0

如何使用此服务更新位置?这个forground服务,我看到帖子说我应该创建一个通知,然后我不明白为什么。奇怪谷歌没有更新Geofence的官方部分,通过解决这个问题与瞌睡。 – user6505882

+0

目前该应用程序有一个AlarmManager是不时生成日志,我可以看到,如果应用程序没有被关闭或处于睡眠状态,但是,地理栅栏系统似乎睡觉 – user6505882

0

WAKE_LOCK权限是不够的,使用唤醒锁,你需要获取并在代码中释放锁,但与Android 6打盹模式开始它进入深度睡眠还与后天WAKE_LOCK 。

,对我也有打盹模式的工作方式:

在主要活动的onStop我获得部分激活锁定,我开始与服务意向STARTFOREGROUND_ACTION,服务调用startForeground并显示一个通知。

在活动onResume中释放WakeLock,服务将以STOPFOREGROUND_ACTION意图停止并且服务本身调用stopForeground & stopSelf。

+0

我完成这个错误日志激活锁定,同时还举行:MyBroadcastReceiver 。当应用仍然背景和设备屏幕关闭时,此错误会发生。 MyBroadcastReceiver现在延伸WakefulBroadcastReceiver。 – user6505882

+0

尝试没有任何wake_lock,Service + startForeground应该足够。设备屏幕关闭时, –

+0

不起作用,应用程序睡眠/死亡。 – user6505882

相关问题