首先是创建一个重复的Alarm:
long nextMillis = System.currentTimeMillis() + 1000;
AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, CoreService.class);
intent.setAction(CoreService.ACTION_SLIENCE_ALARM_BACK);
PendingIntent pendIntent = PendingIntent.getService(context,0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, nextMillis, 1000, pendIntent);
然后如果出现多个地方可能会去设置这个alarm的时候,去判断下这个alarm的pendingintent是否已经被创建,来判断是否需要再次来设置这个alarm(ps:有的手机在你设置同一个alarm的时候覆盖设置会有个系统toast)。
boolean alarmUp
= (PendingIntent.getBroadcast(context.getApplicationContext(), 1,intent, PendingIntent.FLAG_NO_CREATE) != null);
这个就是来判断这个alarm 的pendingintent是否被创建。这个是不能用来判断这个alarm是被cancel过还是被set过的。
FLAG_NO_CREAT能用来处理这个的原因:
The key here is the FLAG_NO_CREATE
which as described in the javadoc: if the described PendingIntent **does not** already exists, then simply return null
(instead of creating a new one)