Android中的定时器AlarmManager简介
2014-07-21 14:20
127 查看
AlarmManager不仅可用于开发闹钟应用,还可以作为一个全局定时器使用,Android应用的程序中也是通过Context的getSystemService()方法来获取AlarmManager对象,一旦程序获取了AlarmManager对象之后,就可以调用它的如下方法来设置定时启动的组件。
set(int type, long triggerAtTime,PendingIntent operation);
设置triggerAtTime时间启动由operation参数指定的组件。其中第一个参数指定定时服务的类型,该参数不可接受如下值:--------------------------------
ELAPSED_REALTIME:指定从现在开始时间过了一定时间(相对于系统启动开始)后启动operation所对应的组件。状态值为:3。
ELAPSED_REALTIME_WAKEUP:指定从现在开始时间(也使用相对时间)过了一定时候后启动operation所对应的组件。即使系统挂机也会执行operation所对应的组件。状态值为:1。
TRC:指定当系统调用System.currentTimeMillis()方法返回值与triggerAtTime相等时启动operation所对应的组件。状态值为1。
RTC_WAKEUP:指定当系统调用System.currentTimeMillis()方法返回值与triggerAtTime相等时启动operation所对应的组件。即使系统关机也会执行operation所对应的组件。状态值为0。
----------------------------------------------------第二个参数表示闹钟执行时间,第三个参数表示闹钟响应动作。
setInexactRepeating(int type, longtriggerAtTime, long interval, PendingIntent operation):设置一个非精确的周期性任务。例如我们设置Alarm每个小时启动一次,但系统并不一定总在每小时的开始启动Alarm服务。第一个参数表示闹钟类型,第二个参数表示闹钟首次执行时间,第三个参数表示闹钟两次执行的间隔时间,第三个参数表示闹钟响应动作。
setRepeating(int type, long triggerArTime,long interval, PendingIntent operation);设置一个周期性执行的定时服务。与第二个方法相似,不过其两个闹钟执行的间隔时间不是固定的而已。
cancel(PendingIntent operation):取消AlarmManager的定时服务。
设置闹钟:
闹钟的提醒:
set(int type, long triggerAtTime,PendingIntent operation);
设置triggerAtTime时间启动由operation参数指定的组件。其中第一个参数指定定时服务的类型,该参数不可接受如下值:--------------------------------
ELAPSED_REALTIME:指定从现在开始时间过了一定时间(相对于系统启动开始)后启动operation所对应的组件。状态值为:3。
ELAPSED_REALTIME_WAKEUP:指定从现在开始时间(也使用相对时间)过了一定时候后启动operation所对应的组件。即使系统挂机也会执行operation所对应的组件。状态值为:1。
TRC:指定当系统调用System.currentTimeMillis()方法返回值与triggerAtTime相等时启动operation所对应的组件。状态值为1。
RTC_WAKEUP:指定当系统调用System.currentTimeMillis()方法返回值与triggerAtTime相等时启动operation所对应的组件。即使系统关机也会执行operation所对应的组件。状态值为0。
----------------------------------------------------第二个参数表示闹钟执行时间,第三个参数表示闹钟响应动作。
setInexactRepeating(int type, longtriggerAtTime, long interval, PendingIntent operation):设置一个非精确的周期性任务。例如我们设置Alarm每个小时启动一次,但系统并不一定总在每小时的开始启动Alarm服务。第一个参数表示闹钟类型,第二个参数表示闹钟首次执行时间,第三个参数表示闹钟两次执行的间隔时间,第三个参数表示闹钟响应动作。
setRepeating(int type, long triggerArTime,long interval, PendingIntent operation);设置一个周期性执行的定时服务。与第二个方法相似,不过其两个闹钟执行的间隔时间不是固定的而已。
cancel(PendingIntent operation):取消AlarmManager的定时服务。
设置闹钟:
public class AlarmTest extends Activity { Button setTime; AlarmManager aManager; Calendar currentTime = Calendar.getInstance(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 获取程序界面的按钮 setTime = (Button) findViewById(R.id.setTime); // 获取AlarmManager对象 aManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE); // 为“设置闹铃”按钮绑定监听器。 setTime.setOnClickListener(new OnClickListener() { @Override public void onClick(View source) { Calendar currentTime = Calendar.getInstance(); // 创建一个TimePickerDialog实例,并把它显示出来。 new TimePickerDialog(AlarmTest.this, 0, // 绑定监听器 new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker tp, int hourOfDay, int minute) { // 指定启动AlarmActivity组件 Intent intent = new Intent(AlarmTest.this, AlarmActivity.class); // 创建PendingIntent对象 PendingIntent pi = PendingIntent.getActivity( AlarmTest.this, 0, intent, 0); Calendar c = Calendar.getInstance(); // 根据用户选择时间来设置Calendar对象 c.set(Calendar.HOUR, hourOfDay); c.set(Calendar.MINUTE, minute); // 设置AlarmManager将在Calendar对应的时间启动指定组件 aManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi); // 显示闹铃设置成功的提示信息 Toast.makeText(AlarmTest.this, "闹铃设置成功啦", Toast.LENGTH_SHORT).show(); } }, currentTime.get(Calendar.HOUR_OF_DAY), currentTime .get(Calendar.MINUTE), false).show(); } }); } }
闹钟的提醒:
public class AlarmActivity extends Activity { MediaPlayer alarmMusic; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 加载指定音乐,并为之创建MediaPlayer对象 alarmMusic = MediaPlayer.create(this, R.raw.alarm); alarmMusic.setLooping(true); // 播放音乐 alarmMusic.start(); // 创建一个对话框 new AlertDialog.Builder(AlarmActivity.this).setTitle("闹钟") .setMessage("闹钟响了,Go!Go!Go!") .setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 停止音乐 alarmMusic.stop(); // 结束该Activity AlarmActivity.this.finish(); } }).show(); } }
相关文章推荐
- [转]Android应用及应用管理简介(作者:邹伟)
- Android 入门开发指南之一 -- Android简介
- Android画图学习总结(一)——类的简介
- Android简介
- Android——简介
- 【Android 入门之一】android简介
- Android画图学习总结(一)——类的简介
- Android JNI知识简介
- Android平台上sqllite 简介
- Android简介
- Android简介
- Android中Toast的用法简介
- android ril开机简介
- Android简介
- Android简介(转载)
- Android(OPhone) 学习笔记 - HelloWorld工程简介
- Android简介
- Android 架构简介
- Android应用及应用管理简介
- Android开发环境配置简介