Android每30秒重复一次警报管理器

时间:2016-06-14 06:46:13

标签: android alarmmanager

我想每隔30秒触发一次android报警管理器(即使我的应用程序处于深度睡眠状态),因为我需要每30秒收集一次GPS位置并上传到服务器。

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);

我已经使用了上面的代码,当设备处于不睡眠状态时它工作正常。但似乎它在睡眠情绪中无法正常工作。 经过一段时间后,它会以5分钟的间隔点火。

我的应用程序在Android 5.0.2 Samsung Tablet上运行。

我发现上面的android 5.0中有一个与警报管理器有关的问题(特别是三星设备) https://code.google.com/p/android/issues/detail?id=82001

为此做任何解决方法?

感谢。

1 个答案:

答案 0 :(得分:0)

对5.0以上使用setInexactRepeating并使用RTC_WAKEUP。即使移动设备处于睡眠模式,这也会确保触发警报。这对我有用。 如果您不想使用服务获取GPS位置。您可以将与地图相关的代码放在广播接收器中,并将代码上传到服务器。在最坏的情况下,服务是捕获GPS位置等后台处理的最佳选择。