1> 用户添加闹钟后,是什么时候开始检查的? 怎么检查的?
When:Trigger the check in 5s from now.
//接受者
CalendarProvider2
case REMINDERS:
{
id = mDbHelper.remindersInsert(values);
// Trigger the check in 5s from now
long triggerAtTime = SystemClock.elapsedRealtime() + ALARM_CHECK_DELAY_MILLIS;
set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pending);
Intent intent = new Intent(ACTION_CHECK_NEXT_ALARM);
// ..................
mAlarmManager.set(type, triggerAtTime, operation); //设置闹钟,给定触发时间。
}
//接受者
CalendarProviderBroadcastReceiver {
onReceive {
//com.android.providers.calendar.intent.CalendarProvider2
context.startService(CalendarProviderIntentService);
}
}
//处理者
CalendarProviderIntentService {
onHandleIntent ->CalendarAlarmManager.runScheduleNextAlarm
->CalendarAlarmManager.scheduleNextAlarmLocked
-> CalendarContract.CalendarAlerts.scheduleAlarm(mContext, mAlarmManager, alarmTime);
-> scheduleNextAlarmCheck(nextAlarmTime + DateUtils.MINUTE_IN_MILLIS);
}
请求者。
CalendarAlarmManager
{
-> Intent intent = new Intent(CalendarReceiver.SCHEDULE);
}
//接受者
CalendarReceiver {
onReceive {
//com.android.providers.calendar.SCHEDULE_ALARM
//处理者
ExecutorService.submit-> cr.update(CalendarAlarmManager.SCHEDULE_ALARM_URI, null /* values */, null /* where */, null /* selectionArgs */);
}
}
2>闹钟是什么时候开始唤醒的?怎么唤醒的?
a->action android:name="android.intent.action.BOOT_COMPLETED"
->AlertReceiver
->context.startService(AlertService);
b)->AlertService ->processMessage->InitAlarmsService->onHandleIntent->