- 浏览: 875332 次
- 性别:
- 来自: 北京
最新评论
-
luna_2006:
...
【Java】枚举类型Enum介绍和方法详解 -
沙漠孤影:
...
【Android】Android Market 链接的生成与分享 -
sjl_008:
有错误,inSampleSize 为2时,图片大小不是原来的2 ...
【Android】如何解决bitmap 内存溢出out of memory的问题 -
huanglei_jay:
【Java】Collections.EMPTY_LIST和Collections.emptyList()简单使用心得 -
wuxuewujiang:
很详细!很有用的整理。
【Objective-C】NSDate详解及获取当前时间等常用操作
对应AlarmManage有一个AlarmManagerServie服务程 序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册下来的各类闹铃并适时的设置即将触发的闹铃给闹铃设备(在系统中,linux实现的设备名 为”/dev/alarm”),并且一直监听闹铃设备,一旦有闹铃触发或者是闹铃事件发生,AlarmManagerServie服务程序就会遍历闹铃列 表找到相应的注册闹铃并发出广播。该服务程序在系统启动时被系统服务程序system_service启动并初始化闹铃设备(/dev/alarm)。当 然,在JAVA层的AlarmManagerService与Linux Alarm驱动程序接口之间还有一层封装,那就是JNI。
AlarmManager将应用与服务分割开来后,使得应用程序开发者不用 关心具体的服务,而是直接通过AlarmManager来使用这种服务。这也许就是客户/服务模式的好处吧。AlarmManager与 AlarmManagerServie之间是通过Binder来通信的,他们之间是多对一的关系。
在android系统中,AlarmManage提供了3个接口5种类型的闹铃服务。
3个接口:
- // 取消已经注册的与参数匹配的闹铃
- void cancel(PendingIntent operation)
- //注册一个新的闹铃
- void set( int type, long triggerAtTime, PendingIntent operation)
- //注册一个重复类型的闹铃
- void setRepeating( int type, long triggerAtTime, long interval, PendingIntent operation)
- //设置时区
- void setTimeZone(String timeZone)
- // 取消已经注册的与参数匹配的闹铃
- void cancel(PendingIntent operation)
- //注册一个新的闹铃
- void set(int type, long triggerAtTime, PendingIntent operation)
- //注册一个重复类型的闹铃
- void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
- //设置时区
- void setTimeZone(String timeZone)
5个闹铃类型
- public static final int ELAPSED_REALTIME
- // 当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠时 间,可以通过调用SystemClock.elapsedRealtime()获得。系统值是3 (0x00000003)。
- public static final int ELAPSED_REALTIME_WAKEUP
- //能唤醒系统,用法同ELAPSED_REALTIME,系统值是2 (0x00000002) 。
- public static final int RTC
- //当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用 System.currentTimeMillis()获得。系统值是1 (0x00000001) 。
- public static final int RTC_WAKEUP
- //能唤醒系统,用法同RTC类型,系统值为 0 (0x00000000) 。
- Public static final int POWER_OFF_WAKEUP
- //能唤醒系统,它是一种关机闹铃,就是说设备在关机状态下也可以唤醒系统,所以我们把它称之为关机闹铃。使用方法同RTC类型,系统值为4(0x00000004)。
- public
- static final int ELAPSED_REALTIME
- //当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠
- 时间,可以通过调用SystemClock.elapsedRealtime()获得。系统值是3 (0x00000003)。
- public static final int ELAPSED_REALTIME_WAKEUP
- //能唤醒系统,用法同ELAPSED_REALTIME,系统值是2 (0x00000002) 。
- public static final int RTC
- //当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用
- System.currentTimeMillis()获得。系统值是1 (0x00000001) 。
- public static final int RTC_WAKEUP
- //能唤醒系统,用法同RTC类型,系统值为 0 (0x00000000) 。
- Public static final int POWER_OFF_WAKEUP
- //能唤醒系统,它是一种关机闹铃,就是说设备在关机状态下也可以唤醒系统,所以我们把它称之为关机闹铃。使用方法同RTC类型,系统值为
- 4(0x00000004)。
注意一个重要的参数PendingIntent。这个PendingIntent可以说是 Intent的进一步封装,他既包含了Intent的描述又是Intent行为的执行(这种定义也许不太严格),如果将Intent比作成一个订单的 话,PendingIntent更像是一个下订单的人,因为它既要负责将订单发出去,也要负责订单发送后的处理,比如发送成功后要准备验收订单货物,发送 失败后要重发还是取消订单等操作。开发者可以通过调用getActivity(Context, int, Intent, int)
getBroadcast(Context, int, Intent, int)
getService(Context, int, Intent, int)
三种不同方式来得到一个PendingIntent实例。
getBroadcast——通过该函数获得的PendingIntent将会 扮演一个广播的功能,就像调用 Context.sendBroadcast()函数一样。当系统通过它要发送一个intent时要采用广播的形式,并且在该intent中会包含相应的 intent接收对象,当然这个对象我们可以在创建PendingIntent的时候指定,也可以通过ACTION 和CATEGORY等描述让系统自动找到该行为处理对象。
- Intent intent = new Intent(AlarmController. this , OneShotAlarm. class );
- PendingIntent sender = PendingIntent.getBroadcast(AlarmController.this , 0 , intent, 0 );
- Intent intent = new Intent(AlarmController.this, OneShotAlarm.class);
- PendingIntent sender = PendingIntent.getBroadcast(AlarmController.this, 0, intent, 0);
getActivity——通过该函数获得的PendingIntent可以直 接启动新的activity, 就像调用 Context.startActivity(Intent)一样.不过值得注意的是要想这个新的Activity不再是当前进程存在的Activity 时。我们在intent中必须使用Intent.FLAG_ACTIVITY_NEW_TASK.
- // The PendingIntent to launch our activity if the user selects this notification
- PendingIntent contentIntent = PendingIntent.getActivity(this , 0 , new Intent( this , AlarmService. class ), 0 );
- // The PendingIntent to launch our activity if the user selects this notification
- PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, AlarmService.class), 0);
getService——通过该函数获得的PengdingIntent可以直接启动新的Service,就像调用Context.startService()一样。
- // Create an IntentSender that will launch our service, to be scheduled
- // with the alarm manager.
- mAlarmSender = PendingIntent.getService(AlarmService.this ,
- 0 , new Intent(AlarmService. this , AlarmService_Service. class ), 0 );
发表评论
-
【Android】监听SDCard安装和卸载的代码片段(测试通过)
2012-03-21 18:39 2234// 监听类 private final Bro ... -
【Android】实现XML解析的几种技术
2012-03-16 16:52 3403本文介绍在Android平台中实现对XML的三种 ... -
【Android】AlarmManager简介
2012-03-15 20:15 2039AlarmManager 包含的主要方法: ... -
【Android】this和this.getApplictionContext的区别 (转载)
2012-03-08 15:30 2863在android中常常会遇到与context有关的内容, ... -
【Android】在QQ通讯录,360之前拦截短信(intent-filter的优先级)
2012-06-26 11:28 3420原文:http://www.bangchui.org/sim ... -
【Android】xml文件里面出现unbound prefix的问题
2012-02-06 15:25 39356相信有很多菜鸟在编写xml文件的时候,都会遇 ... -
【Android】模拟器启动不了 emulator: ERROR: unknown virtual device name
2012-02-06 15:24 3083很多人在配置android环境的时候卡了壳,一切准备工作 ... -
【Android】Intent 和 Intent Filter 官方文档读后总结
2012-02-03 17:46 2299Intent 和 Intent Filter 1 ... -
【Android】Intent 和 Intent Filter
2012-02-03 17:42 1507转自:http://www.cnblogs.com/Andro ... -
【Android】常量DEFAULT_KEYS_SHORTCUT 功能的验证 及其 源码实现分析
2012-02-03 17:15 2450转自:http://blog.csdn.net/silence ... -
【Android】Android 手机杀进程并不省电,效果只能适得其反
2011-11-29 11:21 4947大家可能是被windows毒 ... -
【Android】BroadcastReceiver简介和用法实例,两种注册方式 (二)
2011-11-24 10:52 10026一.BroadcastReceiver简介 B ... -
【Android】BroadCastReceiver 简介
2011-11-24 10:50 3779BroadCastReceiver 简介 Bro ... -
【Android】四大组件之Service(服务)
2011-11-24 10:49 2270Service是Andorid系统提供的四大组件之一,它 ... -
【Android】BroadcastReceiver发送intent给service或者activity
2011-11-24 10:46 7007BroadcastReceiver:对象的生命周期不超过5s, ... -
【Android】理解Service和BroadcastReceiver(转载)
2011-11-24 10:45 2449Service与Activity类似,也需要在Manifest ... -
【Android】监听文件和目录的创建删除移动等事件
2011-11-16 10:36 2773出于安全上的需要,我们经常需要监听sd卡或者其他路径上的 ... -
【Android】如何在Activity中启动另一应用程序的方法,无需得到类名
2011-11-16 10:33 3141在网上搜索了一会相关的实现代码,发现所有的文章都说是需要 ... -
【Android】loadData与loadDataWithBaseURL的区别
2011-11-10 13:54 34198在写WebView时,感觉LoadUrl太浪费流量,而且 ... -
【Android】检测手机摇晃
2011-11-10 11:10 4465做游戏的时候,一般都要使用到多种多样的传感器,以实现比较丰 ...
相关推荐
这个"小闹钟"程序是基于`AlarmManager`构建的,非常适合初学者学习如何在Android环境中实现定时任务。下面我们将深入探讨`AlarmManager`的工作原理及其在项目中的应用。 `AlarmManager`是Android系统服务之一,它...
本教程将深入讲解如何使用`AlarmManager`来实现Android闹钟的基本功能。 一、AlarmManager介绍 `AlarmManager`是Android提供的一个用于管理定时任务的API,它可以在特定的时间点或间隔触发BroadcastReceiver,从而...
通过分析`AlarmManagerDemo`,开发者能够深入学习Android系统的关键组件,并学会如何结合它们来实现复杂的功能,这对于Android应用开发是非常有价值的实践。在实际开发中,可以根据此示例进行扩展和修改,以满足特定...
在本文中,我们将深入探讨 `AlarmManager` 的使用方法、特点以及最佳实践。 ### 1. `AlarmManager` 的基本使用 `AlarmManager` 是 Android SDK 的一部分,位于 `android.app` 包下。我们可以通过以下方式获取 `...
这份名为“android公司内部学习资料”的压缩包包含了深入学习Android开发的丰富内容,涵盖了从基础到高级的关键知识点。以下是对各个文件的详细解读: 第一章_Android开发环境.pdf:这一章节通常会讲解如何搭建...
在这个项目中,我们将深入探讨AlarmManager与Service的结合使用,以及如何实现整点报时的功能。 首先,让我们了解一下AlarmManager的基本用法。AlarmManager是Android的系统服务,可以通过Context.getSystemService...
总之,`AlarmManagerDemo`提供了一个实践性的平台,帮助开发者深入学习Android的定时任务实现。通过研究源码,不仅可以掌握定时器的用法,还能了解到Android系统服务的工作原理,提升自己的编程技能。
通过深入学习以上知识点,并结合“android学习笔记”中的内容,初学者可以逐步建立起对Android开发的全面理解,最终能够独立开发出功能完善的Android应用。记得动手实践是学习过程中不可或缺的部分,多做项目、多...
通过分析这个源码,我们可以深入理解Android应用的开发流程和技术要点。 首先,Android Studio是Google官方推出的集成开发环境(IDE),它为Android应用开发者提供了便捷的开发工具。使用Android Studio,开发者...
通过对这些源代码的学习和分析,我们可以深入了解Android系统如何实现闹钟功能。 首先,`DeskClock`是Android系统中的一个应用,它提供了时钟、闹钟、计时器和秒表等功能。在源代码中,我们可以找到关于闹钟设置、...
在Android平台上,开发一款闹钟应用需要对Android Studio的使用、Android SDK以及AlarmManager服务有深入理解。Android Studio是Google官方推出的集成开发环境,用于构建Android应用,它提供了丰富的工具和功能来...
要深入学习和使用这些代码,需要将其导入Android Studio,理解代码逻辑并根据实际需求进行调整。 总结来说,实现Android定时开关机或重启功能需要结合BroadcastReceiver、Service、AlarmManager和权限管理等知识,...
根据提供的文档内容,我们可以深入探讨Android开发中的多个关键知识点,这些知识点对于初学者以及有一定经验的开发者来说都非常重要。下面将逐一分析: ### 一、Android-Manifest.xml – activity详细说明 `...
在Android开发中,"android课表闹钟"是一个常见的应用场景,尤其对于学生用户群体非常实用。...通过学习这个项目的源代码,开发者可以更好地理解和掌握Android中AlarmManager和BroadcastReceiver的使用技巧。
在这款名为"Android应用源码安卓日程安排提醒日历"的项目中,我们可以深入学习Android平台上关于日程管理与提醒功能的实现。这个压缩包包含的源代码为我们提供了实现一个完整日历应用的实例,这对于我们理解Android...
通过深入研究这个源码,开发者不仅可以学习到如何创建一个完整的闹钟应用,还能了解到Android系统的核心组件和设计模式,这对于提升Android开发技能非常有帮助。同时,对于有定制需求的开发者,源码也是一个很好的...
【Android底层原理培训课件全套(500强内部)】是针对Android系统核心机制的一套全面培训资料,涵盖了从开发...通过深入学习,开发者能够更好地理解Android系统的工作原理,从而创建出更加高效、稳定的Android应用程序。
【基于Android的闹钟】程序是一个实用的移动应用,它允许用户在Android设备上设置和管理个人化的提醒。这个程序经过了实际测试,...这个项目对于想要深入学习Android开发的初学者来说,是一个很好的实践和学习平台。
本文将深入探讨“Android 闹钟实例源码”,为初学者提供一个全面的理解和实践平台。 首先,Android 闹钟的实现主要依赖于`AlarmManager`类,它是Android框架提供的用于安排在未来某个时间点执行任务的服务。`...