因为我需要每隔30秒收集一次GPS位置并上传到服务器,所以我想每隔30秒发射一次android报警管理器(即使我的应用程序处于背景深度睡眠状态)。Android每30秒重复报警管理器
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(this, OnAlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 30000,
30000,
pi);
我上面的代码中使用,它做工精细,当设备处于睡不着mood.But好像它不处于休眠状态的情绪正常工作。 经过一段时间后,它会以5分钟的间隔点燃。
我的应用程序在android 5.0.2 Samsung Tablet上运行。
我发现有以上(特别是三星设备)与报警经理是Android 5.0的一个问题 https://code.google.com/p/android/issues/detail?id=82001
这方面的任何解决方法吗?
谢谢。
如果这是由省电模式引起的,唯一的方法是手动将您的应用列入白名单,并通过对话框告知用户此事。华为Mate 7(棒棒糖和棉花糖)也有类似问题,他们也实施了自己的电源管理,无法摆脱这种情况。 – Opiatefuchs
并且警告:在将来的版本中,或者自从棉花糖以后更好,您不能使用此方法(setRepeating)。并且AlarmManager仅限于每9分钟触发一次,所以这将是一项艰巨的任务,您必须采取一些解决方法。请参阅打盹模式文档:https://developer.android.com/training/monitoring-device-state/doze-standby.html – Opiatefuchs
好的谢谢。如果有其他方法可以在后台获取GPS位置?我的应用程序需要一天以上捕获GPS位置。我认为服务不是一个可靠的解决方案,大多数例子都使用警报管理器/唤醒锁来实现这一点。 –