歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 觀摩Android系統源碼 +鬧鐘-1

觀摩Android系統源碼 +鬧鐘-1

日期:2017/3/1 11:12:33   编辑:Linux編程

我們在使用Android操作系統的時候,作為一個非常實用的應用程序當數Android自帶的鬧鐘程序了。

在此讓我們來一起研究這個Android自帶的鬧鐘程序是怎麼一個實現過程吧!

首先讓我們來看看整個鬧鐘的設置和運行過程,這有助於我們找到研究的出發點。


1.鬧鐘列表


2.鬧鐘設置

好的,我們可以看出這個鬧鐘程序主要是由這兩個Activity組成(當然還包含響玲彈出框),它們分別對應鬧鐘項目源碼中的AlarmClock.java和SettingsActivity.java


AlarmClock.java定義如下(部分代碼):

@Override

  1. protected void onCreate(Bundle icicle) {
  2. super.onCreate(icicle);
  3. String[] ampm = new DateFormatSymbols().getAmPmStrings();
  4. mAm = ampm[0];
  5. mPm = ampm[1];
  6. mFactory = LayoutInflater.from(this);
  7. mPrefs = getSharedPreferences(PREFERENCES, 0);
  8. mCursor = Alarms.getAlarmsCursor(getContentResolver());
  9. updateLayout();
  10. setClockVisibility(mPrefs.getBoolean(PREF_SHOW_CLOCK, true));
  11. }

在onCreate()函數中主要看

mCursor = Alarms.getAlarmsCursor(getContentResolver());

從這句我們就可以看出啟動後所看到的鬧鐘列表是有ContentProvider中遍歷所有鬧鐘而形成,後面自然有形成這個列表的方法。

其中這裡用的了Alarms這個類。下面列出了這個類中定義的所有方法(粗體為重要方法):

addAlarm 添加鬧鐘方法

deleteAlarm 刪除鬧鐘方法

getAlarmsCursor 獲取ContentProvider中的所有鬧鐘對象,返回相應的游標句柄

getFilteredAlarmsCursor 獲取ContentProvider中所有開啟的鬧鐘對象

getAlarm 根據某一鬧鐘ID獲取相應的鬧鐘對象

setAlarm 設置鬧鐘方法

enableAlarm 對鬧鐘的使能操作

calculateNextAlert 計算下一個鬧鐘響起的時間

disableExpiredAlarms 關閉所有過時鬧鐘

setNextAlert 設置下一鬧鐘響起時間

enableAlert 系統定時提醒操作

disableAlert撤銷定時鬧鐘操作

calculateAlarm 根據時分計算鬧鐘響起時間


可以看出Alarms類主要封裝了對鬧鐘對象的所有操作,是整個鬧鐘程序的控制邏輯。

Copyright © Linux教程網 All Rights Reserved