AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似。都有两种相似的用法:(1)在指定时长后执行某项操作(2)周期性的执行某项操作
AlarmManager对象配合Intent使用,可以定时的开启一个Activity,发送一个BroadCast,或者开启一个Service.
下面的代码详细的介绍了两种定时方式的使用:
(1)在指定时长后执行某项操作
代码
//操作:发送一个广播,广播接收后Toast提示定时操作完成
Intent intent =new Intent(Main.this, alarmreceiver.class);
intent.setAction("short");
PendingIntent sender=
PendingIntent.getBroadcast(Main.this, 0, intent, 0);
//设定一个五秒后的时间
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 5);
AlarmManager alarm=(AlarmManager)getSystemService(ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
//或者以下面方式简化
//alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5*1000, sender);
Toast.makeText(Main.this, "五秒后alarm开启", Toast.LENGTH_LONG).show();
//注意:receiver记得在manifest.xml注册
代码
public static class alarmreceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals("short")){
Toast.makeText(context, "short alarm", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(context, "repeating alarm",
Toast.LENGTH_LONG).show();
}
}
}
(2)周期性的执行某项操作
代码
Intent intent =new Intent(Main.this, alarmreceiver.class);
intent.setAction("repeating");
PendingIntent sender=PendingIntent
.getBroadcast(Main.this, 0, intent, 0);
//开始时间
long firstime=SystemClock.elapsedRealtime();
AlarmManager am=(AlarmManager)getSystemService(ALARM_SERVICE);
//5秒一个周期,不停的发送广播
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP
, firstime, 5*1000, sender);
AlarmManager的setRepeating()相当于Timer的Schedule(task,delay,peroid);有点差异的地方时Timer这个方法是指定延迟多长时间
以后开始周期性的执行task;
AlarmManager的取消:(其中需要注意的是取消的Intent必须与启动Intent保持绝对一致才能支持取消AlarmManager)
代码
Intent intent =new Intent(Main.this, alarmreceiver.class);
intent.setAction("repeating");
PendingIntent sender=PendingIntent
.getBroadcast(Main.this, 0, intent, 0);
AlarmManager alarm=(AlarmManager)getSystemService(ALARM_SERVICE);
alarm.cancel(sender);
分享到:
相关推荐
本篇文章将详细介绍如何使用`AlarmManager`来启动广播`BroadcastReceiver`、服务`Service`以及页面`Activity`。 一、AlarmManager介绍 `AlarmManager`是Android系统提供的一个接口,可以设置一次性或周期性的定时...
本教程将深入探讨`AlarmManager`的使用,以及如何通过它来实现一个实用的闹钟功能。 ### 1. `AlarmManager`介绍 `AlarmManager`是Android系统服务,它提供了调度任务的能力,可以在指定的绝对时间或相对时间触发一...
本篇文章将详细探讨`AlarmManager`的使用方法,包括设置一次性闹钟、周期性闹钟以及相关的最佳实践。 ### 一、AlarmManager介绍 `AlarmManager`位于`android.app`包下,它提供了多种调度策略,例如精确到毫秒的...
在使用AlarmManager时,开发者需要注意以下几点: 1. 如果BroadcastReceiver调用`Context.startService()`,确保BroadcastReceiver和服务都拥有适当的唤醒锁策略,以保持设备在服务执行完毕前不休眠。 2. 对于短期或...
博客Demo通常会展示如何使用`AlarmManager`进行实际操作。比如,开发者首先需要创建一个`BroadcastReceiver`来处理接收到的意图。然后,定义一个`PendingIntent`,这是一个轻量级的意图包装器,可以在未来某个时刻...
本文将深入探讨如何使用`AlarmManager`来实现多个定时且重复的提醒功能。 首先,我们需要理解`AlarmManager`的工作原理。`AlarmManager`通过向系统注册闹钟事件,当达到设定的时间点时,会触发一个`PendingIntent`...
本篇文章将详细讲解如何在Android中使用`AlarmManager`来设置闹钟,并提供相应的示例代码。 首先,了解`AlarmManager`的基本概念。`AlarmManager`提供了多种触发警报的方式,包括精确到毫秒的即时警报(`ELAPSED_...
下面我们将深入探讨AlarmManager的工作原理、使用方法以及如何实现定时更换壁纸。 ### AlarmManager概述 AlarmManager是Android系统的公共服务,它允许应用程序安排未来的操作,即使应用本身已经关闭。这些操作...
这里需要使用`AlarmManager.setRepeating()`方法,传入`RTC`类型的触发器、起始时间、重复间隔(例如,每两天一次,因为是周一和周三)。起始时间应该是用户选择的最早时间段的下次出现时间。 4. **创建...
在实际应用中,`AlarmManager`和`PendingIntent`的组合使用可以实现复杂的定时任务管理,但需要注意的是,Android系统为了优化电池寿命,可能会对`AlarmManager`的触发时间进行调整。因此,在设计这类功能时,应考虑...
1. **AlarmManager的基本使用** - `AlarmManager`是Android框架中的一个系统服务,可以通过`getSystemService()`方法获取,如`Context.getSystemService(Context.ALARM_SERVICE)`。 - 提供了多种触发类型:`...
在给定的场景中,我们需要使用`AlarmManager`来实现一个精准的定时任务,该任务需要在设备开机时启动,并且每半小时向服务器上传一次位置信息。当网络可用且获取到GPS信号时,任务必须持续执行,即使进程意外终止,...
例如,假设一个应用使用BroadcastReceiver监听网络状态变化,并在连接可用时启动AlarmManager设置的定时任务。如果BroadcastReceiver的实现存在问题,如处理广播的时间过长,或者在处理过程中阻塞了主线程,那么就...
这篇博客将深入探讨`AlarmManager`的原理、使用方法以及常见应用场景。 `AlarmManager`提供了三种主要类型的报警: 1. **ELAPSED_REALTIME**: 从系统启动到现在的毫秒数,通常用于周期性的定时任务,不受系统休眠...
1. **AlarmManager的使用**:首先,你需要获取到`AlarmManager` 的实例,通过`Context.getSystemService(Context.ALARM_SERVICE)` 方法。然后,你可以选择合适的`AlarmType`,如`ELAPSED_REALTIME`、`RTC` 或 `RTC_...
3. 设置AlarmManager:使用`AlarmManager`的`set()`或`setRepeating()`方法来设置闹钟。这两个方法需要传入触发类型、触发时间和PendingIntent。 例如: ```java Intent intent = new Intent(context, MyReceiver....
要使用`AlarmManager`设置定时任务,首先需要创建一个`PendingIntent`,这个意图会携带执行的动作。例如,如果要启动一个`Service`,那么`PendingIntent`应该与`startService()`动作相关联。下面是一个简单的示例: ...
AlarmManager提供了访问系统闹钟的服务。它允许你安排你的应用在未来某个时间点运行。这就相当于定时任务。对于少于60s的定时任务,不推荐使用AlarmManager,可以使用更高效的的Handler来处理频发的任务。
本文将深入探讨如何使用`AlarmManager`和`Service`来实现后台的定时任务。 首先,`Service`是Android系统的一个关键组件,它允许应用程序在后台运行代码,即使用户已经离开了应用界面。`Service`主要用于执行长时间...
至于"AlarmManagerClock"这个压缩包文件,可能是包含了一个模拟时钟或者示例代码,用于演示如何使用AlarmManager来实现定时功能。可能的内容包括一个简单的应用,该应用会在指定时间显示通知或者更新UI。通常,这样...