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`是系统提供的一项重要功能,它允许开发者创建应用程序来管理和设置闹钟。在本文中,我们将深入探讨`AlarmClock`的工作原理,以及如何在实际应用中实现一个经过真机实测的功能完善...
在Android开发中,定时任务是应用中不可或缺的一部分,它允许开发者在特定的时间点或周期性地执行某些操作,比如更新应用数据、发送通知或者执行后台服务。本篇将深入探讨如何利用Android的Alarm机制轻松创建定时...
本项目"Android_Alarm-master_androidalarm_"显然是一个针对初学者的Android闹钟功能实现示例。下面我们将深入探讨Android中的Alarm Manager及其相关知识点。 1. **Alarm Manager**: Alarm Manager是Android系统...
标题中的"com.android.alarmclock"是Android操作系统中内置的一个应用程序的包名,它与手机的闹钟功能密切相关。在Android系统中,每个应用程序都有一个唯一的包名,这个包名就像是程序的身份证,用于区分系统中不同...
在Android系统中,Alarm(闹钟)和Alert(提醒)是两个重要的概念,它们与系统的通知和定时事件处理紧密相关。本文将详细讲解Android Alarm和Alert的机制、使用方法以及如何在实际应用中实现相关功能。 一、Android...
在Android系统中,闹钟服务(AlarmClock)是系统级的重要功能之一,它允许开发者设置定时事件,并在指定时间触发提醒。本资源提供的是Android 2.1版本(API级别7)内置闹钟应用的源代码,对于学习和理解Android系统...
android-alarm.doc PendingInent 与 AlarmManager
android alarmclock 源代码
Android alarm流程从上层到内核的完整分析,很完整,代码分析很全
在Android系统中,Alarm服务是核心组件之一,用于在特定时间执行预定的任务,如唤醒设备、更新服务等。本文将深入解析Android Alarm的结构及其工作原理,并结合Linux高精度时钟的概念,帮助读者全面理解这一关键机制...
- **定义**: `struct alarm` 定义在 `include/linux/android_alarm.h` 文件中, 代表了一个 Alarm 设备。 - **字段解释**: - `node`: 用于将 `struct alarm` 插入到红黑树中的节点。 - `type`: 表示 Alarm 设备的...
在Android程序设计中,"ALARM"通常指的是系统的AlarmManager服务,它允许应用程序安排在未来某个时间点触发一个事件。这个事件可以是启动一个服务、发送一个广播或者执行其他操作。在开发闹钟应用时,这一功能尤为...
在Android操作系统中,AlarmClock是一个至关重要的组件,它允许开发者创建和管理应用程序的定时提醒功能。本文将深入探讨Android AlarmClock的源码,理解其工作原理,并指导如何在实际项目中安全、高效地运用。 一...
android上面alarm功能设置定时功能时,并不能把alarm写入到rtc芯片的alarm寄存器中,所以要实现定时开机功能,需要另外实现接口 代码中在4.4和5.1上已调试通过,通过增加jni接口直接对rtc ioctrl写入alarm操作,在...
在Android开发中,"Alarm"通常指的是系统的AlarmManager服务,它是Android系统提供的一种调度机制,允许开发者安排在未来的某个时间点执行特定任务。这个小项目可能是开发者为了学习和实践Android编程,尤其是...
"Alarm.7z"可能包含了一个实现以上一种或多种策略的示例代码或者库,通过解压和研究其中的文件,我们可以学习如何在Android中有效地创建一个长期后台运行的定时任务。这个项目可能涵盖了创建BroadcastReceiver、配置...
Android OS手机,C语言编程使用alarm定时器;若手机echo mem > /sys/power/state即将进入deep! Z状态时,启动alarm定时器,当到达设定的时间点,手机暂时被唤醒(若不进行resume操作,稍等片刻,系统再次进入deep! Z...