`
zhouYunan2010
  • 浏览: 207652 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类

Android中的Alarm

阅读更多
android中的定时任务。由AlarmManager对象进行管理
1.定时唤醒广播接受者
直接贴代码,在代码中说明
AlarmController.java
public class AlarmController extends Activity{
	private Toast mToast;
	private static final String TAG = "app";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.alarm_controller);
		
		Button button = (Button)findViewById(R.id.one_shot);
		button.setOnClickListener(oneShotListener);
		button = (Button)findViewById(R.id.start_repeating);
		button.setOnClickListener(startRepeatingListener);
		button = (Button)findViewById(R.id.stop_repeating);
		button.setOnClickListener(stopRepeatingListener);
	}
	
	private OnClickListener oneShotListener = new OnClickListener() {	
		@Override
		public void onClick(View v) {	//只进行一次定时,不重复执行
			AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
			Calendar calendar = Calendar.getInstance();
			calendar.setTimeInMillis(System.currentTimeMillis());
			calendar.add(Calendar.SECOND, 30);	//设置30秒后执行
			
			/*
			 * 根据PendingIntent.getBroadcast
			 * 指明定时唤醒广播接收者
			 * */
			PendingIntent pending = PendingIntent.getBroadcast(AlarmController.this, 
					0, new Intent(AlarmController.this,OneShotAlarm.class), 0);
			am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pending);  //表示在指定时间后执行
			
			if(mToast!=null){
				mToast.cancel();
			}
			mToast.makeText(AlarmController.this, "one_shot_scheduled", Toast.LENGTH_LONG).show();
		}
	};
	
	private OnClickListener startRepeatingListener = new OnClickListener() {
		@Override
		public void onClick(View v) {		//重复执行
			AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
			
			PendingIntent pend = PendingIntent.getBroadcast(AlarmController.this, 
					0, new Intent(AlarmController.this,RepeatingAlarm.class), 0);
			long triggerAtTime = SystemClock.elapsedRealtime();
			triggerAtTime +=15*1000;	//表示第一次执行15秒后
			am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,   
					triggerAtTime, 15*1000, pend);	//表示过15秒重复唤醒广播接受者
			if(mToast!=null){
				mToast.cancel();
			}
			mToast.makeText(AlarmController.this, "repeating_scheduled", Toast.LENGTH_LONG).show();
			
		}
	};
	
	private OnClickListener stopRepeatingListener = new OnClickListener() {
		@Override
		public void onClick(View v) {	//取消alarm
			AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
			
			PendingIntent pend = PendingIntent.getBroadcast(AlarmController.this, 
					0, new Intent(AlarmController.this,RepeatingAlarm.class), 0);
			am.cancel(pend);
			
			if(mToast!=null){
				mToast.cancel();
			}
			mToast.makeText(AlarmController.this, "stop_repeating_scheduled", Toast.LENGTH_LONG).show();
		}
	};

}



然后可以定期执行OneShotAlarm和RepeatingAlarm中的onRecevier中的内容

2.1.定时创建service
关键代码:
//注意此方法PendingIntent.getService()
PendingIntent pend = PendingIntent.getService(this, 0, 
				new Intent(this,AlarmService_Service.class), 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
long firstTime = SystemClock.elapsedRealtime();
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 15*1000, pend);


完整例子:


分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    android.AlarmClock

    在Android操作系统中,`AlarmClock`是系统提供的一项重要功能,它允许开发者创建应用程序来管理和设置闹钟。在本文中,我们将深入探讨`AlarmClock`的工作原理,以及如何在实际应用中实现一个经过真机实测的功能完善...

    Android_Alarm

    在Android开发中,定时任务是应用中不可或缺的一部分,它允许开发者在特定的时间点或周期性地执行某些操作,比如更新应用数据、发送通知或者执行后台服务。本篇将深入探讨如何利用Android的Alarm机制轻松创建定时...

    Android_Alarm-master_androidalarm_

    本项目"Android_Alarm-master_androidalarm_"显然是一个针对初学者的Android闹钟功能实现示例。下面我们将深入探讨Android中的Alarm Manager及其相关知识点。 1. **Alarm Manager**: Alarm Manager是Android系统...

    com.android.alarmclock

    标题中的"com.android.alarmclock"是Android操作系统中内置的一个应用程序的包名,它与手机的闹钟功能密切相关。在Android系统中,每个应用程序都有一个唯一的包名,这个包名就像是程序的身份证,用于区分系统中不同...

    android alarm alert

    在Android系统中,Alarm(闹钟)和Alert(提醒)是两个重要的概念,它们与系统的通知和定时事件处理紧密相关。本文将详细讲解Android Alarm和Alert的机制、使用方法以及如何在实际应用中实现相关功能。 一、Android...

    android2.1内置闹钟源码AlarmClock

    在Android系统中,闹钟服务(AlarmClock)是系统级的重要功能之一,它允许开发者设置定时事件,并在指定时间触发提醒。本资源提供的是Android 2.1版本(API级别7)内置闹钟应用的源代码,对于学习和理解Android系统...

    android-alarm.doc

    android-alarm.doc PendingInent 与 AlarmManager

    android alarmclock

    android alarmclock 源代码

    Android alarm流程从上层到内核的完整分析

    Android alarm流程从上层到内核的完整分析,很完整,代码分析很全

    文档-Android Alarm结构分析 + Linux高精度时钟分析

    在Android系统中,Alarm服务是核心组件之一,用于在特定时间执行预定的任务,如唤醒设备、更新服务等。本文将深入解析Android Alarm的结构及其工作原理,并结合Linux高精度时钟的概念,帮助读者全面理解这一关键机制...

    Android闹钟内核驱动——Alarm.pdf

    - **定义**: `struct alarm` 定义在 `include/linux/android_alarm.h` 文件中, 代表了一个 Alarm 设备。 - **字段解释**: - `node`: 用于将 `struct alarm` 插入到红黑树中的节点。 - `type`: 表示 Alarm 设备的...

    android程序设计ALARM

    在Android程序设计中,"ALARM"通常指的是系统的AlarmManager服务,它允许应用程序安排在未来某个时间点触发一个事件。这个事件可以是启动一个服务、发送一个广播或者执行其他操作。在开发闹钟应用时,这一功能尤为...

    android AlarmClock

    在Android操作系统中,AlarmClock是一个至关重要的组件,它允许开发者创建和管理应用程序的定时提醒功能。本文将深入探讨Android AlarmClock的源码,理解其工作原理,并指导如何在实际项目中安全、高效地运用。 一...

    android上实现定时开机接口

    android上面alarm功能设置定时功能时,并不能把alarm写入到rtc芯片的alarm寄存器中,所以要实现定时开机功能,需要另外实现接口 代码中在4.4和5.1上已调试通过,通过增加jni接口直接对rtc ioctrl写入alarm操作,在...

    Android 开发的alarm

    在Android开发中,"Alarm"通常指的是系统的AlarmManager服务,它是Android系统提供的一种调度机制,允许开发者安排在未来的某个时间点执行特定任务。这个小项目可能是开发者为了学习和实践Android编程,尤其是...

    Alarm.7z,Android定时任务

    "Alarm.7z"可能包含了一个实现以上一种或多种策略的示例代码或者库,通过解压和研究其中的文件,我们可以学习如何在Android中有效地创建一个长期后台运行的定时任务。这个项目可能涵盖了创建BroadcastReceiver、配置...

    Android OS之使用alarm

    Android OS手机,C语言编程使用alarm定时器;若手机echo mem > /sys/power/state即将进入deep! Z状态时,启动alarm定时器,当到达设定的时间点,手机暂时被唤醒(若不进行resume操作,稍等片刻,系统再次进入deep! Z...

Global site tag (gtag.js) - Google Analytics