AlarmManager

1.主要功能是在指定的时间执行指定的任务,要注意所有的定时任务在手机重启后会消失,如果需要重启后继续用,可以加个开机自启,然后重新设置.
2.用法:设置AlarmManager在指定的时间发送广播,在接收器中写任务
例子:
定时广播
AlarmManager am=(AlarmManager)getSystemService(ALARM_SERVICE);
Intent it=new Intent(context,MyRecevier.class);
PendingIntent pi=PendingIntent.getBroadcast(this, 0, intent,0);
am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
写接收器类,并注册
<receiver android:name=".MyRecevier" android:process=".myreceiver"/>
<!--android:process 接收器进程名字,可任意填,不填默认为包名,在网上有网友发表:"真机测试,如果不填,在AlarmManager时间设为过去的时间时,会不停收到广播(死循环)"-->
3.方法以及常量介绍
am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
设置广播什么时候发出,第一个参数表示闹钟的类型,可以为:
ELAPSED_REALTIME  当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠时间,可以通过调用SystemClock.elapsedRealtime()获得。系统值是3    (0x00000003)。   
ELAPSED_REALTIME_WAKEUP 能唤醒系统,用法同ELAPSED_REALTIME,系统值是2 (0x00000002) 。   
RTC  当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用 System.currentTimeMillis()获得。系统值是1 (0x00000001) 。   
RTC_WAKEUP 能唤醒系统,用法同RTC类型,系统值为 0 (0x00000000) 。 
前两者使用相对时间,时间从系统启动开始算起,SystemClock.elapsedRealtime()可以获得当前的相对时间,单位为毫秒,例如:alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+5000, sender);  
后两者使用绝对时间,时间以1970.1.1号为参考时间,System.currentTimeMillis()获取从1970.1.1号以来的时间,单位为毫秒,例如:alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5000, sender);

am.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), 10000, pi);
 在上面方法的基础上,添加了重复执行的功能,倒数第二参数为间隔时间,单位为毫秒
 
 am.cancel(pi);//取消已经注册的与参数匹配的闹铃
 public void cancel (PendingIntent operation) 
Since: API Level 1 Remove any alarms with a matching Intent. Any alarm, of any type, whose Intent matches this one (as defined by filterEquals(Intent)), will be canceled.
 
void  setTimeZone(String timeZone)   //设置时区  Requires the permission android.permission.SET_TIME_ZONE.
void  setTime(long millis) //Set the system wall clock time. Requires the permission android.permission.SET_TIME.
 
PendingIntent Intent的进一步封装,添加了延迟执行功能。两者主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的.还有PendingIntent就是一个可以在满足一定条件下执行的Intent,它相比于Intent的优势在于自己携带有Context对象,这样他就不必依赖于context才可以存在。Intent对象里包含了要执行的操作所需要的信息,PendingIntent对象里还包含了要执行什么操作(发出广播,启动界面,...)
三种不同方式来得到PendingIntent实例。 
getBroadcast——通过该函数获得的PendingIntent将会扮演一个广播者的功能,就像调用 Context.sendBroadcast()函数一样。当系统通过它要发送一个intent时要采用广播的形式,并且在该intent中会包含相应的 intent接收对象,当然这个对象我们可以在创建PendingIntent的时候指定,也可以通过ACTION 和CATEGORY等描述让系统自动找到该行为处理对象。 
Java代码 
Intent intent = new Intent(AlarmController.this, MyReceiver.class);   
PendingIntent sender = PendingIntent.getBroadcast(AlarmController.this, 0, intent, 0);

getActivity——通过该函数获得的PendingIntent可以直接启动新的activity, 就像调用 Context.startActivity(Intent)一样.不过值得注意的是要想这个新的Activity不再是当前进程存在的Activity 时。我们在intent中必须使用Intent.FLAG_ACTIVITY_NEW_TASK. 
Java代码 
// The PendingIntent to launch our activity if the user selects this notification   
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,  new Intent(this, AlarmService.class), 0);

getService——通过该函数获得的PengdingIntent可以直接启动新的Service,就像调用Context.startService()一样。

// Create an IntentSender that will launch our service, to be scheduled  with the alarm manager.

mAlarmSender = PendingIntent.getService(AlarmService.this , 0 ,  new  Intent(AlarmService.this , AlarmService_Service. class ),  0 );

android Alarm 闹钟相关推荐

  1. android Alarm闹钟发送广播播放音乐

    MusicService.java service播放音乐 MainActivity.java package com.yqy.yqy_alarm; import java.util.Calendar ...

  2. Android:闹钟提醒结合通知(alarm+notification)

    Android的Notification是android系统中很重要的一个机制, 产品人员常常利用通知栏的方式,跟用户进行弱沟通.拥有推送通知的app要比没有此类功能的app活跃率要高很多.另外类似于 ...

  3. android tv闹钟_Android开发之闹钟

    闹钟开发: 1.需要时间选择器TimePicker 2.需要Calendar类对日期时间进行操作 3.需要AlarmManager//闹钟管理实质是一个全局定时器, 是Android中常用的一种系统级 ...

  4. android alarm 的权限,android - Android权限被拒绝-com.android.alarm.permission.SET_ALARM - 堆栈内存溢出...

    我正在尝试通过我的应用设置闹钟,但是当我通过执行以下操作启动意图时,如下所述: 如何在Android中使用意图启动闹钟屏幕? public boolean onMenuItemSelected(int ...

  5. Android 实现闹钟功能

      原文地址:Android 实现闹钟功能作者:Android_Learners 一.手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以 ...

  6. android闹钟例子,自己软件中调用android系统闹钟

    [实例简介] 自己软件中调用android系统闹钟! 综合网上资料,得来 [实例截图] [核心代码] 54ba60f3-fa09-4e61-b3ab-c4fca16d07b2 └── CallSyst ...

  7. android小闹钟程序,Android实现闹钟小程序.pdf

    Android实实现现闹闹钟钟小小程程序序 这篇文章主要为大家详细介绍了Android实现闹钟小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近写了 闹钟的程序,看到SharedPrefe ...

  8. 基于Android的闹钟的软件

    一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...

  9. 基于android个性闹钟的设计与开发,Android个性闹钟计算机毕业设计答辩ppt.ppt

    基于Android的闹钟设计与开发 Logo 绪论 Contents 1 相关技术及开发平台 2 系统分析 3 系统设计 4 系统实现 5 Logo 绪论 随着移动平台的崛起 越来越多的传统PC软件被 ...

  10. 基于android系统的闹钟,基于Android的闹钟的软件

    一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...

最新文章

  1. 关于Ubuntu 安装tftp服务器的问题解决
  2. 电大计算机考试题目excel,电大计算机考试复习题EXCEL部分
  3. ES6的generator
  4. c如何调用java_JNI学习------C语言调用Java (转)
  5. [转载] 过 DNF TP 驱动保护
  6. 2010年度CSDN十大博客文章
  7. 颈椎病自我治疗预防颈椎病
  8. macos 系统固件 路径_itunes下载固件在哪里 itunes下载固件位置【介绍】
  9. 用Pytorch自建6层神经网络训练Fashion-MNIST数据集,测试准确率达到 92%
  10. 关于QRCode生成二维码(背景图、Logo)
  11. 演讲实录丨朱频频 让Bots无处不在
  12. 美国计算机科学本科录取人数,美国加州大学圣地亚哥分校计算机科学本科录取条件.pdf...
  13. c语言iota怎么用,常量及iota的简单用法
  14. React——Components
  15. [转]嵌入式Web服务器
  16. 超级计算机应用于石油勘测等方面,算天算地 算人——国家超级计算天津中心主任刘光明解读超级计算机系统应用(二)...
  17. 计算机视觉:特征提取与匹配
  18. linux命令下载电影,Linux命令行用wget下载精彩电影
  19. 慕课网视频中的代码---3-4 Minst手写体识别
  20. 【Arc GIS 零基础教学】土地利用类型图的绘制方法

热门文章

  1. 【BZOJ】【3053】The Closest M Points
  2. php 百度第三方登录接口开发,PHP:通过MVC,实现第三方登录(百度)
  3. ibd 导入mysql_mysql导入frm和ibd文件还原数据
  4. windows 7 旗舰版下,安装vs2010旗舰版终于成功!
  5. 计算机 英语词汇 缩写,计算机相关的53个英语单词缩写
  6. Gson的基本介绍和使用
  7. 【FPGA】VGA驱动:行同步时序+场同步时序
  8. 如何远程连接POSTGRESQL数据库
  9. 对“全栈工程师”一词的理解
  10. 系统状态空间模型c语言,【单选题】能完全描述系统动态行为的数学模型是() A. 传递函数 B. 微分方程 C. 状态 空间表...