重复警报不能在一分钟内工作

时间:2016-05-15 10:05:07

标签: android alarmmanager

我有一个应用程序,它在后台处理服务(当屏幕被关闭时)。我在一个带有重复警报的Activity中启动该服务。无论我在60秒以下设置什么,它都会被忽略,并且警报在60秒后完全出现。 我使用Android 6.0上的模拟器,Android 6.0的Samsung Galaxy和Android 5.1.1的Sony Z3进行了测试。一切都一样。 ICS完美运作。是否有可能在一分钟之内重复警报?

如果我将它设置为120秒,则每120秒工作一次。同样的90秒...

Intent i=new Intent(this, AppService.class);
i.putExtra(AppService.VOL_ALM, test_value));

PendingIntent pi = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);  
alarmManager.cancel(pi);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 *time_in_seconds, pi);

修改

我设置了60秒并让手机在后台运行。那就是结果

Mai 15  17:08:01.803
Mai 15  17:10:39.213
Mai 15  17:25:39.317
Mai 15  17:40:39.259
Mai 15  17:55:39.255
Mai 15  18:10:39.292
Mai 15  18:25:39.255
Mai 15  18:40:39.238

我怎样才能至少每分钟运行一次服务?

1 个答案:

答案 0 :(得分:1)

我有解决方案。我总是在服务中重置警报,甚至可以在5秒内完成。

Intent i=new Intent(this, AppService.class);
i.putExtras(extraBundle); // read out inside the service

PendingIntent pi = PendingIntent.getService(this, 0, i, pi.FLAG_ONE_SHOT);
AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);

// Remove old alarm
alarmManager.cancel(pi);
// Set new alarm
alarmManager.set(AlarmManager.RTC_WAKEUP, time, pi);