- 浏览: 636306 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
laj12347:
楼主太给力了
Eclipse设置、调优、使用 -
kunlyy:
楼主太给力了
Eclipse设置、调优、使用 -
knight_black_bob:
mark ~
Eclipse设置、调优、使用 -
hujunxiang:
好全好全~~~
Eclipse设置、调优、使用 -
bugyun:
楼主辛苦了
Eclipse设置、调优、使用
AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent。
对应AlarmManager更深层的了解可以参考:
http://www.programbbs.com/doc/5888.htm
http://jinguo.iteye.com/blog/799778
android提供了四种类型的闹钟:
❑ ELAPSED_REALTIME
在指定的延时过后,发送广播,但不唤醒设备。
❑ ELAPSED_REALTIME_WAKEUP
在指定的演示后,发送广播,并唤醒设备
延时是要把系统启动的时间SystemClock.elapsedRealtime()算进去的,具体用法看代码。
❑ RTC
在指定的时刻,发送广播,但不唤醒设备
❑ RTC_WAKEUP
在指定的时刻,发送广播,并唤醒设备
AlarmManager提供的方法:
❑ void set(int type, long triggerAtTime, PendingIntent operation)
设置一个闹钟
❑ void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
设置一个会重复的闹钟
❑ void setInexactRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
设置一个重复闹钟的不精确版本,它相对而言更节能(power-efficient)一些,因为系统可能会将几个差不多的闹钟合并为一个来执行,减少设备的唤醒次数。
内置的几个interval为:
INTERVAL_FIFTEEN_MINUTES
INTERVAL_HALF_HOUR
INTERVAL_HOUR
INTERVAL_HALF_DAY
INTERVAL_DAY
如果你将其设为DAY,那么可能这一天中的所有闹钟都会被合并掉。
❑ void cancel(PendingIntent operation)
取消一个设置的闹钟
❑ void setTimeZone(String timeZone)
设置系统的默认时区。需要android.permission.SET_TIME_ZONE权限
PendingIntent:简单的说就是在Intent上在加个指定的动作。Intent的话,我们还需要在执行startActivity、startService或sendBroadcast才能使Intent有用。而PendingIntent的话就是将这个动作包含在内了,如PendingIntent.getBroadcast就包含了sendBroadcast的动作。
5s后发送指定广播
5s后发送指定广播,然后每个10秒重复发送广播
取消一个闹钟
闹钟设置在数据库中,然后创建一个BootReceiver,在启动的时候读取数据库并设置好闹钟。
对应AlarmManager更深层的了解可以参考:
http://www.programbbs.com/doc/5888.htm
http://jinguo.iteye.com/blog/799778
android提供了四种类型的闹钟:
❑ ELAPSED_REALTIME
在指定的延时过后,发送广播,但不唤醒设备。
❑ ELAPSED_REALTIME_WAKEUP
在指定的演示后,发送广播,并唤醒设备
延时是要把系统启动的时间SystemClock.elapsedRealtime()算进去的,具体用法看代码。
❑ RTC
在指定的时刻,发送广播,但不唤醒设备
❑ RTC_WAKEUP
在指定的时刻,发送广播,并唤醒设备
AlarmManager提供的方法:
❑ void set(int type, long triggerAtTime, PendingIntent operation)
设置一个闹钟
❑ void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
设置一个会重复的闹钟
❑ void setInexactRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
设置一个重复闹钟的不精确版本,它相对而言更节能(power-efficient)一些,因为系统可能会将几个差不多的闹钟合并为一个来执行,减少设备的唤醒次数。
内置的几个interval为:
INTERVAL_FIFTEEN_MINUTES
INTERVAL_HALF_HOUR
INTERVAL_HOUR
INTERVAL_HALF_DAY
INTERVAL_DAY
如果你将其设为DAY,那么可能这一天中的所有闹钟都会被合并掉。
❑ void cancel(PendingIntent operation)
取消一个设置的闹钟
❑ void setTimeZone(String timeZone)
设置系统的默认时区。需要android.permission.SET_TIME_ZONE权限
// 首先创建Receiver public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "alarm", Toast.LENGTH_SHORT).show(); } }
// manifest中申明,并不需要intent-filter,我们是明确指定发到哪个receiver的 <receiver android:name="yuan.receivers.AlarmReceiver" />
PendingIntent:简单的说就是在Intent上在加个指定的动作。Intent的话,我们还需要在执行startActivity、startService或sendBroadcast才能使Intent有用。而PendingIntent的话就是将这个动作包含在内了,如PendingIntent.getBroadcast就包含了sendBroadcast的动作。
5s后发送指定广播
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); int requestCode = 0; PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(), requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); // 5秒后发送广播,只发送一次 int triggerAtTime = SystemClock.elapsedRealtime() + 5 * 1000; alarmMgr.set(AlarmManager.ELAPSED_REALTIME, triggerAtTime, pendIntent);
5s后发送指定广播,然后每个10秒重复发送广播
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); int requestCode = 0; PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(), requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); // 5秒后发送广播,然后每个10秒重复发广播。广播都是直接发到AlarmReceiver的 int triggerAtTime = SystemClock.elapsedRealtime() + 5 * 1000; int interval = 10 * 1000; alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, interval, pendIntent);
取消一个闹钟
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); // 与上面的intent匹配(filterEquals(intent))的闹钟会被取消 alarmMgr.cancel(pendIntent);
评论
3 楼
yuanzhifei89
2013-01-18
leodemacondo 写道
如果要让手机不用每次启动后都从新设置闹钟要怎么做呢?
闹钟设置在数据库中,然后创建一个BootReceiver,在启动的时候读取数据库并设置好闹钟。
2 楼
leodemacondo
2013-01-17
如果要让手机不用每次启动后都从新设置闹钟要怎么做呢?
1 楼
zhenglingkun
2012-06-26
不错!对我很有帮助!
发表评论
-
Error: Cannot run program "sh": Launching failed
2014-02-20 21:05 3654**** Build of configuration De ... -
通过wifi来使用ADB[转]
2013-11-16 16:09 1483adb除了通过usb连接外,还可以通过tcp连接建立调试,在 ... -
Installation failed due to invalid APK file!
2013-11-16 15:42 8135今天在Eclipse里面测试Android的开发。 写好的代 ... -
QQ2013导致adb不能使用问题的修复[转]
2013-11-16 14:48 1606由于实在没法不用QQ,当QQ哭着闹着要升级到最新版的时候,手 ... -
adt安装慢解决
2013-06-08 14:29 4749安装adt的时候不管时在线安装还是下载下来了离线安装,都不见安 ... -
android 百度地图 wgs84和baidu09坐标转换
2012-11-14 23:35 17619wgs84: gps获取出来的坐标 ... -
hiero使用
2012-11-14 16:51 5122hiero是一个java小程序,能够帮助用户自定义.fnt ... -
分享一个日志类
2012-11-09 02:07 351/*** * <p> 封装日志api的调用 ... -
android相关工具收集
2012-07-30 09:33 1232常用 Java 静态代码分析工具的分析与比较 http://b ... -
proguard使用
2012-07-26 23:39 5317proguard的常见配置参数 -include {filen ... -
一张图让你明白android 九宫格工具使用
2012-07-07 16:13 2658... -
android sdk, adt等的下载
2012-06-28 21:38 16844一些小技巧 在eclipse中 ... -
ProgressBar定制
2011-12-07 09:04 4099ProgressBar的基本使用 可以参考这个:http:// ... -
android 源码 阅读
2011-11-24 14:50 3008虽然android的源码也时不时的会去看,但大部分还是只能看懂 ... -
Dialog定制
2011-11-18 14:47 7163定制dialog的方式 1. 可以通过Theme的方式,and ... -
Toast的使用
2011-10-31 16:12 6284Toast的基本原理其实就是将一个View添加到WindowM ... -
android 开发资料收集
2011-10-28 14:32 1706Android 解屏幕锁与点亮屏幕:键盘锁(KeyguardM ... -
android单元测试
2011-09-09 17:08 0android测试框架涉及的类的UML图 activity测 ... -
android.os包中一些类的使用
2011-09-08 15:09 23552android.os.Build Build.BOARD ... -
android游戏开发学习
2011-09-06 16:55 10958相关资源 2D中如何判断一点在另一个点的那个方位: http: ...
相关推荐
本篇文章将详细介绍如何使用`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。通常,这样...