2

我正在使用AlarmManager小部件更新事务。我有不同的间隔值,如 5、10、15、30 分钟等。

如何打电话AlarmManager

alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);        

// Interval value, default 600 (600*1000 -> 10 min)
Long repeat = Long.parseLong(prefs.getString("update_preference", "600"));

// Set the manager
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*repeat, pi);

所以如果用户选择 5 或 10 分钟,没关系。但如果不是,我的意思是,用户选择更大的值,例如 15、30、60 分钟,MyService而不是尽快工作setRepetaing

有什么不同或错误?

编辑:它立即工作 <30 分钟,但现在使用独特的请求代码工作超过 30 分钟。

4

2 回答 2

2

我认为您必须在 PendingIntent 中使用唯一的请求代码

待处理意图的多个实例

于 2012-05-15T09:30:56.757 回答
2
pi = PendingIntent.getService(context, 12345, i, PendingIntent.FLAG_UPDATE_CURRENT);   

这可能有效,“0”不是唯一 ID 的最佳选择。

于 2012-05-15T09:36:12.137 回答