我有一个应用程序,它在后台处理服务(当屏幕被关闭时)。我在一个带有重复警报的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
我怎样才能至少每分钟运行一次服务?
答案 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);