这是一个非常愚蠢的问题,我仍然无法弄清楚AlarmManager
在Android中是如何运作的。假设我想每半小时安排一次重复任务。我想在活动onCreate()
安排它。我做这样的事情:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
AlarmManager.INTERVAL_HALF_HOUR,
AlarmManager.INTERVAL_HALF_HOUR, alarmIntent);
}
现在我的问题是操作系统如何知道此警报已经安排?我的意思是,每次活动创建时都不会安排新的活动,是吗?否则,在10次活动开始后,我会每三分钟而不是半小时收到警报。请,任何Android大师,关于这个问题的解释。
答案 0 :(得分:1)
现在我的问题是OS如何知道此警报已经安排好了?
AFAIK,它会查找等效PendingIntent
的现有警报。在这里,通过"等效PendingIntent
",我的意思是:
getBroadcast()
)getBroadcast()
的第二个参数)Intent
此处,通过"等效Intent
",我的意思是它们匹配所有路由信息,在您的情况下,ComponentName
是从this
生成的和AlarmReceiver.class
。特别是额外的东西在这里不算等价。