【观摩Android系统源码】+闹钟-1

时间:2021-11-13 16:44:46

   我们在使用Android操作系统的时候,作为一个非常实用的应用程序当数Android自带的闹钟程序了。

   在此让我们来一起研究这个Android自带的闹钟程序是怎么一个实现过程吧!

  

   首先让我们来看看整个闹钟的设置和运行过程,这有助于我们找到研究的出发点。


   1.闹钟列表

   【观摩Android系统源码】+闹钟-1


 2.闹钟设置

  【观摩Android系统源码】+闹钟-1

  

     好的,我们可以看出这个闹钟程序主要是由这两个Activity组成(当然还包含响玲弹出框),它们分别对应闹钟项目源码中的AlarmClock.java和SettingsActivity.java 


     AlarmClock.java定义如下(部分代码):

      @Override

    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        String[] ampm = new DateFormatSymbols().getAmPmStrings();
        mAm = ampm[0];
        mPm = ampm[1];

        mFactory = LayoutInflater.from(this);
        mPrefs = getSharedPreferences(PREFERENCES, 0);
        mCursor = Alarms.getAlarmsCursor(getContentResolver());

        updateLayout();
        setClockVisibility(mPrefs.getBoolean(PREF_SHOW_CLOCK, true));
    }
   

     在onCreate()函数中主要看

mCursor = Alarms.getAlarmsCursor(getContentResolver());

从这句我们就可以看出启动后所看到的闹钟列表是有ContentProvider中遍历所有闹钟而形成,后面自然有形成这个列表的方法。

其中这里用的了Alarms这个类。下面列出了这个类中定义的所有方法(粗体为重要方法):

addAlarm 添加闹钟方法

deleteAlarm 删除闹钟方法

getAlarmsCursor 获取ContentProvider中的所有闹钟对象,返回相应的游标句柄

getFilteredAlarmsCursor 获取ContentProvider中所有开启的闹钟对象

getAlarm 根据某一闹钟ID获取相应的闹钟对象

setAlarm 设置闹钟方法

enableAlarm 对闹钟的使能操作

calculateNextAlert 计算下一个闹钟响起的时间

disableExpiredAlarms 关闭所有过时闹钟

setNextAlert 设置下一闹钟响起时间

enableAlert 系统定时提醒操作

disableAlert撤销定时闹钟操作

calculateAlarm 根据时分计算闹钟响起时间


可以看出Alarms类主要封装了对闹钟对象的所有操作,是整个闹钟程序的控制逻辑。


下一篇将详细探讨闹钟对象的具体结构。