android.app.AlarmManager#FLAG_STANDALONE源码实例Demo

下面列出了android.app.AlarmManager#FLAG_STANDALONE 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: android_9.0.0_r45   文件: AlarmManagerService.java
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);
        }
    }
}
 
源代码2 项目: android_9.0.0_r45   文件: AlarmManagerService.java
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;
}