Android Alarm

来源:互联网 发布:网页 字幕 滚动 js 编辑:程序博客网 时间:2024/05/22 13:38

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->


0 0
原创粉丝点击