android AlarmManager采用
Android的闹钟实现机制非常easy, 仅仅须要调用AlarmManager.Set()方法将闹钟设置提交给系统,当闹钟时间到后,系统会依照我们的设定发送指定的广播消息。我们写一个广播去接收消息做对应处理就可以。
第一步是设置闹钟:
<span style="color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', Tahoma, Helvetica, SimSun, sans-serif; font-size: 14px; line-height: 21px; ">private static String MY_ALARM_ACTION = "android.alarm.test.action";</span>
<span style="white-space:pre"> </span>/**
* 设置闹钟
* @param context
* @param firstTriggerTimeMillis 首次触发时间 (单位毫秒)
* @param periodTimeMillis 间隔时间
*/
private void setAlarmTime(Context context, long firstTriggerTimeMillis, long periodTimeMillis) {
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(MY_ALARM_ACTION);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, firstTriggerTimeMillis, periodTimeMillis, sender);
}
第二步是写一个接口器接收事件广播:
/**
* 闹钟接收
* @author Antony
* @date 2014-7-23
*/
public static class MyAlarmReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (MY_ALARM_ACTION.equals(intent.getAction())) {
Logcat.e("接收一次闹钟消息!");
<span style="white-space:pre"> </span>//TODO 在这里写相关处理
return;
}
}
}
当然Receiver是须要在Mainfest.xml中注冊的,我的注冊信息例如以下:
<receiver android:name="com.test.fee.MyTest$MyAlarmReceiver" >
<intent-filter>
<action android:name="android.alarm.zywl.action" />
</intent-filter>
</receiver>
细心的可能会发现我的MyAlarmReceiver类是带static关键词的,还有我在注冊广播时是加了"$"符号的。原因是酱紫的,为了代码不至于看起来那么凌乱,接收器是作为MyTest的内部类来写的。假设BroadcastReceiver做为内部类来写在Manifest中是不能直接用形如以下的方式来注冊的:
<receiver android:name="com.test.fee.MyAlarmReceiver" >
<intent-filter>
<action android:name="android.alarm.zywl.action" />
</intent-filter>
</receiver>
这样会抛出找不到MyAlarmReceiver类的错误信息的。也就是说BroadcastReceiver想做为内部类来写要加Statickeyword,而且在注冊路径要加$符号标识清楚内部类归属。
第三步就是再写一个开机广播接收器:
写法与MyAlarmReceiver类似,可做为内部类也可单独列为一个类来写。在开机广播接收器中调用设置闹钟的方法就可以。
这样每次手机重新启动后又会又一次设置闹钟,闹钟就不会出现中断了。当然我这里设置的是以固定时间间隔反复执行的闹钟,因需求而定了。
闹钟实现 原理就这些了。至该界面显示了详细和及时的方式,等等。,每个人都有不同的想法,不要再说了。
版权声明:本文博主原创文章。博客,未经同意不得转载。
android AlarmManager采用的更多相关文章
- Android AlarmManager类的应用(实现闹钟功能)
1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...
- [置顶] Android AlarmManager实现不间断轮询服务
在消息的获取上是选择轮询还是推送得根据实际的业务需要来技术选型,例如对消息实时性比较高的需求,比如微博新通知或新闻等那就最好是用推送了.但如果只是一般的消息检测比如更新检查,可能是半个小时或一个小时一 ...
- Android AlarmManager的取消
取消alarm使用AlarmManager.cancel()函数,传入参数是个PendingIntent实例. 该函数会将所有跟这个PendingIntent相同的Alarm全部取消,怎么判断两者是否 ...
- Android AlarmManager实现不间断轮询服务
在消息的获取上是选择 轮询还是推送得根据实际的业务需要来技术选型,例如对消息实时性比较高的需求,比如微博新通知或新闻等那就最好是用推送了.但如果只是一般的消息检测比如 更新检查,可能是半个小时或一个小 ...
- Android AlarmManager报警的实现
什么是AlarmManager? AlarmManager它是Android经常使用的系统-Level提醒服务,我们指定为广播中的特定时间Intent. 我们设定一个时间,然后在该时间到来时.Alar ...
- android AlarmManager讲解
Android系统闹钟定时功能框架,总体来说就是用数据库存储定时数据,有一个状态管理器来统一管理这些定时状态的触发和更新.在Andriod系统中实现定时功能,最终还是要用到系统提供的AlarmMana ...
- $Android AlarmManager的用法详解
在Android的Alarm机制中,使用AlarmManager可以实现类似闹钟这样的定时任务.在毕业设计项目中要实现定时任务的功能,所以在这里先进行一下梳理. (一)AlarmManager与Bro ...
- android AlarmManager 详解
在开发互联网应用时候,我们常常要使用心跳来保证客户端与服务器的连接.怎么完成心跳很关键,在说道客户端心跳功能时,如果使用Timer或者专门开起一个线程来做心跳的工作,会浪费CPU工作时间,而且也会更多 ...
- Android AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作
AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟.通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似.都有两种相似的用法:(1)在指定时长后执行某项操 ...
随机推荐
- Cocos2d-x 游戏存档
游戏存档功能能够保存游戏中数据.让玩家游戏能够延续. 单机游戏更为重要.而CCUserDefault能够作轻量级数据库使用,用来存储数据,支持数据类型bool,int, float, double, ...
- LeetCode My Solution: Minimum Depth of Binary Tree
Minimum Depth of Binary Tree Total Accepted: 24760 Total Submissions: 83665My Submissions Given a bi ...
- 【剑指offer】q34:丑数
题目要求第n个丑数.所以对于中间结果不须要保存. def Humble(index): curHum = 1 M2 = 2; M3 = 3; M5 = 5 while index > 1: cu ...
- Android wear 初体验
近期一直在研究android wear SDK,整体感受来说就是和现有的android 其它的开发SDK还是有非常多新的东西.比如手机终端与手表端的通信机制,手表端的UI规范.可是从开发本身来讲,还是 ...
- 关于JVM的ClassLoader(转)
众所周知,java是编译型的语言,写的是java文件,最后运行的是class文件,class文件是运行在JVM之中的,这时候就有一个问题,JVM如何装载class文件的?是通过ClassLoader来 ...
- cocos2dx手写js绑定C++
这两天连续查阅了js绑定c++的非常多文章 , 有手动与自己主动两种方式 . 本来想用自己主动绑定的 , 可是NDK一直下载不下来.....就给算了 . 以下总结一下手动绑定的实现过程 : 一共三步 ...
- 【Unity Shaders】使用CgInclude让你的Shader模块化——Unity内置的CgInclude文件
本系列主要參考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图. 这里是本书所需的代码 ...
- Android中callback(接口回调)机制
事实上,callback 机制在Android 中无处不在,特别是以Handler.Callback.Listener这三个词结尾的,都是利用callback机制来实现的.比方点击事件onClickL ...
- WPF界面设计技巧(10)-样式的继承
原文:WPF界面设计技巧(10)-样式的继承 PS:现在我的MailMail完工了,进入内测阶段了,终于可以腾出手来写写教程了哈,关于MailMail的介绍及内测程序索取:http://www.cnb ...
- Spring框架简单介绍
原文地址: http://my.oschina.net/myriads/blog/37922 1.使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也须要多 ...