下面列出了android.app.AlarmManager#FLAG_STANDALONE 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void insertAndBatchAlarmLocked(Alarm alarm) {
final int whichBatch = ((alarm.flags & AlarmManager.FLAG_STANDALONE) != 0) ? -1
: attemptCoalesceLocked(alarm.whenElapsed, alarm.maxWhenElapsed);
if (whichBatch < 0) {
addBatchLocked(mAlarmBatches, new Batch(alarm));
} else {
final Batch batch = mAlarmBatches.get(whichBatch);
if (batch.add(alarm)) {
// The start time of this batch advanced, so batch ordering may
// have just been broken. Move it to where it now belongs.
mAlarmBatches.remove(whichBatch);
addBatchLocked(mAlarmBatches, batch);
}
}
}
int attemptCoalesceLocked(long whenElapsed, long maxWhen) {
final int N = mAlarmBatches.size();
for (int i = 0; i < N; i++) {
Batch b = mAlarmBatches.get(i);
if ((b.flags&AlarmManager.FLAG_STANDALONE) == 0 && b.canHold(whenElapsed, maxWhen)) {
return i;
}
}
return -1;
}