Android之AlarmManager
Android平台中,Alarm Manager Service控制着闹钟和唤醒功能。和其他系统服务一样,提供了一个辅助管理类-AlarmManager,我们只需要使用AlarmManager即可调用Alarm Manager Service。
在AlarmManager提供了如下方法:

1、void cancel(pendingIntent operatioin):取消一个已注册的定时器
2、void set(int type,long triggerAtTime,PendingIntent operation):设置一个新的定时器。
3、void setInecactRepeating(int type,long triggerAtMillis,long intervalMills,PendingIntent operation):设置一个不精确的重复类型的定时器。
4、void setRepeating(int type,long triggerAtMills,long intervalMills,PendingIntent operation):设置一个重复类型的定时器
5、void setTime(long millis):设置系统时钟时间。
6、void setTimeZone(String timeZone):设置时区
在上面设置时钟的方法中,第一个参数要设置一个闹钟的类型,在系统中提供了如下类型:
1、ELAPSED_REALTIME:此类型的闹钟在系统休眠状态下是不可用的,不能唤醒系统。使用的时间是相对于系统的启动时间,该时间可以通过SystemClock.elapsedRealTime()来获取。
2、ELAPSED_REALTIME_WAKEUP:此类型的闹钟在系统休眠状态下是可用的,使用的时间是相对于系统的启动时间。
3、RTC:此类型在系统休眠状态下是不可用的,使用的是真实时间。
4、RTC_WAKEUP:此类型在系统休眠状态下可用,使用的是真实时间。
在上面的设置可重复的时钟的方法中,intervalMillis参数的取值可以如下:
1、INTERVAL_FIFTEEN_MINUTES
2、INTERVAL_HALF_HOUR
3、INTERVAL_HOUR
4、INTERVAL_HALF_DAY
5、INTERVAL_DAY

具体如何使用AlarmManager呢,我们通过一个案例来说明。
public class AlarmManagerActivity extends ActionBarActivity {
private AlarmManager alarmManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm_manager);
alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
IntentFilter filter = new IntentFilter("com.jredu.action.MyAlarm");
registerReceiver(receiver,filter);
}
public void setClock(View v){
Intent i = new Intent("com.jredu.action.MyAlarm");
PendingIntent intent=
PendingIntent.getBroadcast(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(),
30*1000,intent);
}
public void cancleClock(View v){
Intent i = new Intent("com.jredu.action.MyAlarm");
PendingIntent intent=
PendingIntent.getBroadcast(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(intent);
}
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("com.jredu.action.MyAlarm")){
Toast.makeText(AlarmManagerActivity.this,"这是我设置的闹钟!",Toast.LENGTH_LONG).show();
}
}
};
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}
运行效果图如下:


出处:http://www.cnblogs.com/jerehedu/
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:

Android之AlarmManager的更多相关文章
- Android中AlarmManager使用示例(持续更新,已经更改)
现在普遍的手机都会有一个闹钟的功能,如果使用Android来实现一个闹钟可以使用AtarmManager来实现.AtarmManager提供了一种系统级的提示服务,允许你安排在将来的某个时间执行一个服 ...
- Android闹钟 AlarmManager的使用
Android闹钟 AlarmManager的使用 AlarmManager介绍 AlarmManager这个类提供对系统闹钟服务的访问接口. 你可以为你的应用设定一个在未来某个时间唤醒的功能. 当闹 ...
- Android 的 AlarmManager 和 wakeLock联合使用
http://stackoverflow.com/questions/6864712/android-alarmmanager-not-waking-phone-up 主要说的是,对于android ...
- Android 开发 AlarmManager 定时器
介绍 AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent.简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为 ...
- 我的Android进阶之旅------>Android使用AlarmManager全局定时器实现定时更换壁纸
该DEMO将会通过AlarmManager来周期的调用ChangeService,从而让系统实现定时更换壁纸的功能. 更换壁纸的API为android.app.WallpaperManager,它提供 ...
- Android利用AlarmManager执行定时任务
Android中的AlarmManager功能很强大,它是一个全局定时器,可以在指定时间或者指定周期启动其他组件(包括Activity.Service.BroadcastReceiver). 使用Al ...
- android 定时器AlarmManager
1.android中通常是使用AlarmManager来定时启动一个单次或重复多次操作的.具体的说就是我们通过AlarmManager设定一个时间和注册一个intent到系统中,然后在该时间到来时,系 ...
- android 通过AlarmManager实现守护进程
场景:在app崩溃或手动退出或静默安装后能够自动重启应用activity 前提:得到系统签名 platform.pk8.platform.x509.pem及signapk.jar 三个文件缺一不可(系 ...
- 深入学习android之AlarmManager
对应AlarmManage有一个AlarmManagerServie服务程 序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册下来的各类闹铃并适时的设置即将触发的闹铃给闹铃设备(在系统中,l ...
- android之AlarmManager 全局定时器
AlarmManager实质是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver ...
随机推荐
- 一次ygc越来越慢的问题排查过程
问题发现场景 某天突然收到线上应用的gc时间过长的告警,刚开始只有一台机器偶尔报一下,后续其他机器也纷纷告警,具体告警的阈值是应用10分钟内ygc的总时长达到了6.6s. 初步排除过程 按照gc问题常 ...
- 【基础知识】C#数据库中主键类型的选择
主键在数据库中占有很大的地位,对于表的关联性,和数据的唯一识别性有重要的作用: 1,在C#开发中,Int自增字段和Guid(数据库中是uniqueidentifier类型)可设置为主键: 1>G ...
- 直接插入排序之Java实现
直接插入排序之Java实现 一.方法一 package cn.com.zfc.lesson21.sort; import java.util.Arrays; /** * * @title Insert ...
- [BZOJ 4809] 相逢是问候
Link: 传送门 Solution: 以前没见过的套路题…… 1.使用EXT欧拉定理降幂的套路: $a^{x}=a^{xmod\phi(P)+\phi(P)} mod P$,且$x\ge P$ 这样 ...
- 20172333 2017-2018-2 《Java程序设计》第6周学习总结
20172333 2017-2018-2 <Java程序设计>第6周学习总结 教材学习内容 1.数组的基本用法,如数组的定义:int[该数组类型] name = new int[X]X为数 ...
- UVALive 4868 Palindrometer 暴力
F - Palindrometer Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit ...
- C# 高级编程9 第30章MEF C#可扩展编程之MEF第2章(抄录)
Managed Extensibility Framework (MEF) 什么是 MEF? Managed Extensibility Framework 即 MEF 是用于创建轻量.可扩展应用 ...
- windows下python2.7.14版本的安装
本文主要对window下如何安装Python进行图解说明 步骤一.从官网下载相应的版本(本文以2.7.14为例),https://www.python.org/downloads/release/py ...
- JVM监控启动参数
服务端: JVM监控启动参数 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=52001 -Dcom.sun.ma ...
- String对象池的作用
我们知道得到String对象有两种办法:String str1="hello";String str2=new String("hello"); 这两种 ...