<转载>基础篇、AlarmManager类的作用
来源:互联网 发布:mysql批量insert限制 编辑:程序博客网 时间:2024/06/10 05:52
原地址:http://blog.csdn.net/lonelyroamer/article/details/7547186
基础篇、AlarmManager类的作用
分类: Android闹钟系统全面研究2012-05-09 15:19 229人阅读 评论(0) 收藏 举报
- 下面是AlarmManager的源码,自己按照理解看了一遍,英文水平不咋滴,许多英文注释看不太懂,只能理解个大概的意思。
- /**
- * 这个类提供访问系统的闹钟服务。它允许你按照自己的设定,在未来的某个时间点运行你的程序。
- * 当一个闹钟运行,并且它所关联的intent已经通过系统广播进行了注册,如果这个应用没有正在运行,
- * 那么,它就会自己去开启这个指定的 应用程序。
- * 设备处于待机状态时候,已经注册的闹钟也会一直保留(在这段时间里,如果闹钟指定的时间到了,它可以随意的唤醒这个设备)。
- * 但是闹钟会在关机或者重启的情况下全部被清除掉。
- */
- package android.app;
- import android.content.Context;
- import android.content.Intent;
- import android.os.RemoteException;
- import android.os.ServiceManager;
- public class AlarmManager
- {
- /**
- * 指定当系统调用的System.currentTimeMillis()方法返回值和triggerAtTime相等时,启动operation所对应的
- * 组件,当系统在睡眠状态时候,也会唤醒
- */
- public static final int RTC_WAKEUP = 0;
- /**
- *指定当系统调用的System.currentTimeMillis()方法返回值和triggerAtTime相等时,启动operation所对应的组件,
- *当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它。
- */
- public static final int RTC = 1;
- /**
- *指定从现在开始过一段时间后启动operation对应的组件,这种类型的闹钟可以唤醒系统
- */
- public static final int ELAPSED_REALTIME_WAKEUP = 2;
- /**
- *指定从现在开始过一段时间后启动operation对应的组件,这种类型的闹钟不会唤醒系统
- */
- public static final int ELAPSED_REALTIME = 3;
- /**Google尚未开源的类IAlarmManager,后面单独介绍*/
- private final IAlarmManager mService;
- /**
- * 该构造器是默认类型default,也就是说,只有同包的类才能够通过new构造AlarmManager对象
- */
- AlarmManager(IAlarmManager service) {
- mService = service;
- }
- /**
- * 设置一个闹钟。注意:使用Handler可以更简单更有效的运行。
- * 如果已经有一个闹钟有相同的IntentSender,那么它就会被取消。
- * 如果这个时间是在过去,那么这个闹钟就会立即触发。如果这个Intent已经有了一个设定的闹钟,
- * 那么就会取代最开始的那一个。
- * 这个闹钟是一个广播意图,将被传送到一个你已经注册了的广播receiver,
- * 参数:下面类型之一ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC or
- * RTC_WAKEUP.
- * 参数: triggerAtTime 开始的时间
- * 参数: operation 将要启动的组件
- */
- public void set(int type, long triggerAtTime, PendingIntent operation) {
- try {
- mService.set(type, triggerAtTime, operation);
- } catch (RemoteException ex) {
- }
- }
- /**
- *设置一个周期性的闹钟。
- */
- public void setRepeating(int type, long triggerAtTime, long interval,
- PendingIntent operation) {
- try {
- mService.setRepeating(type, triggerAtTime, interval, operation);
- } catch (RemoteException ex) {
- }
- }
- /**
- * Available inexact recurrence intervals recognized by
- * {@link #setInexactRepeating(int, long, long, PendingIntent)}
- */
- public static final long INTERVAL_FIFTEEN_MINUTES = 15 * 60 * 1000;
- public static final long INTERVAL_HALF_HOUR = 2*INTERVAL_FIFTEEN_MINUTES;
- public static final long INTERVAL_HOUR = 2*INTERVAL_HALF_HOUR;
- public static final long INTERVAL_HALF_DAY = 12*INTERVAL_HOUR;
- public static final long INTERVAL_DAY = 2*INTERVAL_HALF_DAY;
- /**
- * 设置一个非精准的周期性闹钟
- * 举个例子:一个闹钟每个小时都会重复,但是它不一定在每个小时的开始时候启动闹钟服务。
- */
- public void setInexactRepeating(int type, long triggerAtTime, long interval,
- PendingIntent operation) {
- try {
- mService.setInexactRepeating(type, triggerAtTime, interval, operation);
- } catch (RemoteException ex) {
- }
- }
- /**
- * 取消任何一个闹钟,只要符合所传入的意图,
- */
- public void cancel(PendingIntent operation) {
- try {
- mService.remove(operation);
- } catch (RemoteException ex) {
- }
- }
- /**
- * 设置系统挂钟的时间
- * 需要权限 android.permission.SET_TIME
- * 参数:长整型的时间计数
- */
- public void setTime(long millis) {
- try {
- mService.setTime(millis);
- } catch (RemoteException ex) {
- }
- }
- /**
- * 设置系统默认的时区
- * 需要权限android.permission.SET_TIME_ZONE
- * 参数:时区格式的字符串参数,设置时区
- */
- public void setTimeZone(String timeZone) {
- try {
- mService.setTimeZone(timeZone);
- } catch (RemoteException ex) {
- }
- }
- }
通过上面,就可以看出,想要设置一个闹钟,就必须要使用AlarmManager对象。
AlarmManager实际作用不仅仅作为闹钟,实际上它是一个全局的计时器,可以在指定时间或指定周期内执行某个组件(Activity,Service,BroadcastReceiver);
- <转载>基础篇、AlarmManager类的作用
- 基础篇、AlarmManager类的作用
- AlarmManager类的应用
- Android闹钟 AlarmManager基础
- AlarmManager类
- friend的作用[转载]
- friend的作用[转载]
- SetRegistryKey的作用(转载)
- static的作用(转载)
- SetRegistryKey的作用(转载)
- 电感的作用(转载)
- 讲讲volatile的作用(转载)
- 配置OpenSessionInView的作用(转载)
- __attribute__ ((packed)) 的作用(转载)
- AutoEventWireup 属性的作用(转载)
- (转载)nop指令的作用
- SoapHeader 的作用是什么(转载)
- 头文件的作用--转载。
- sgu 133 Border
- v$session SERIAL#字段的含义
- 安装SDL_mixer with smpeg
- sgu 326 最大流 不错的构图。。哦哦类。。。
- 遍历WPF窗体元件的两种方法
- <转载>基础篇、AlarmManager类的作用
- Eclipse中添加MyEclipse插件
- 笔记本创建wifi
- V$SESSION 较详细解释
- ZOJ_1240_IBM Minus One
- 用C语言数组实现位操作(位数组)
- uva 103 - Stacking Boxes
- 从m个数中任意去n个数的组合
- 关于 C++ 默认构造函数 的几个误区