博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android AlarmManager采用
阅读量:5320 次
发布时间:2019-06-14

本文共 1799 字,大约阅读时间需要 5 分钟。

Android的闹钟实现机制非常easy, 仅仅须要调用AlarmManager.Set()方法将闹钟设置提交给系统,当闹钟时间到后,系统会依照我们的设定发送指定的广播消息。我们写一个广播去接收消息做对应处理就可以。


第一步是设置闹钟:

private static String MY_ALARM_ACTION = "android.alarm.test.action";
	/**	 * 设置闹钟	 * @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("接收一次闹钟消息!");
			//TODO 在这里写相关处理	        	return;	        }	    }	}

当然Receiver是须要在Mainfest.xml中注冊的,我的注冊信息例如以下:

细心的可能会发现我的MyAlarmReceiver类是带static关键词的,还有我在注冊广播时是加了"$"符号的。原因是酱紫的,为了代码不至于看起来那么凌乱,接收器是作为MyTest的内部类来写的。假设BroadcastReceiver做为内部类来写在Manifest中是不能直接用形如以下的方式来注冊的:

这样会抛出找不到MyAlarmReceiver类的错误信息的。也就是说BroadcastReceiver想做为内部类来写要加Statickeyword,而且在注冊路径要加$符号标识清楚内部类归属。

第三步就是再写一个开机广播接收器:

写法与MyAlarmReceiver类似,可做为内部类也可单独列为一个类来写。在开机广播接收器中调用设置闹钟的方法就可以。

这样每次手机重新启动后又会又一次设置闹钟,闹钟就不会出现中断了。当然我这里设置的是以固定时间间隔反复执行的闹钟,因需求而定了。

闹钟实现 原理就这些了。至该界面显示了详细和及时的方式,等等。,每个人都有不同的想法,不要再说了。

版权声明:本文博主原创文章。博客,未经同意不得转载。

转载于:https://www.cnblogs.com/blfshiye/p/4832927.html

你可能感兴趣的文章
jenkins搭建
查看>>
加固linux
查看>>
IPSP问题
查看>>
10.17动手动脑
查看>>
WPF中Image显示本地图片
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
面对问题,如何去分析?(日报问题)
查看>>
Java多线程基础(一)
查看>>
SQL Server中利用正则表达式替换字符串
查看>>
leetcode Letter Combinations of a Phone Number
查看>>
MyEclipse中将普通Java项目convert(转化)为Maven项目
查看>>
node js 安装.node-gyp/8.9.4 权限 无法访问
查看>>
windows基本命令
查看>>
VMware中CentOS设置静态IP
查看>>
[poj1006]Biorhythms
查看>>
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
Hover功能
查看>>
js千分位处理
查看>>
Mac---------三指拖移
查看>>
字符串类型的相互转换
查看>>