编辑:根据CommonsWare的答复澄清了问题。
我们通过AlarmManager安排定时器,每60秒触发一次。当我们的应用程序被杀死时,我们的闹钟似乎不再执行。有没有办法让这些闹钟在应用程序被手动或系统杀死时仍然持续存在?
对我们来说,这是一个问题,因为我们有一个小部件应用程序显示时间。这意味着我们需要每分钟更新时间。为了避免AppWidgetProvider的onUpdate方法的30分钟更新限制,我们使用AlarmManager。它通常运行得很好,但一些用户报告时间不同步。经过与他们几次交谈后,我怀疑我们的应用程序正在被任务管理器应用程序手动杀死或Android自身正在杀死我们的应用程序。
欢迎任何其他解决根本问题(在小部件中保持时间同步)的替代方案。
以下是我们执行以安排闹钟的代码:
Intent intent = new Intent(UPDATE_TIME);
PendingIntent pIntent = PendingIntent.getBroadcast(ctx,
0 /* no requestCode */, intent, PendingIntent.FLAG_UPDATE_CURRENT );
// get alarm params
Date d = new Date();
long timeTilMinuteChange = 60*1000-d.getSeconds()*1000;
long startTime = System.currentTimeMillis() + + timeTilMinuteChange;
AlarmManager am = (AlarmManager) ctx.getSystemService(Context.
am.cancel(pIntent);
am.set(AlarmManager.RTC, System.currentTimeMillis(), pIntent);
am.setRepeating(AlarmManager.RTC, startTime, 60000, pIntent);