文档章节

AlarmManager

huiyun-yoyo
 huiyun-yoyo
发布于 2016/11/09 10:23
字数 678
阅读 7
收藏 0
点赞 0
评论 0

/AlarmManager称呼为全局定时器 //AlarmManager对象配合Intent使用,可以定时的开启一个Activity,发送一个BroadCast,或者开启一个Service. // //android提供了四种类型的闹钟: //ELAPSED_REALTIME在指定的延时过后,发送广播,但不唤醒设备。 //ELAPSED_REALTIME_WAKEUP在指定的演示后,发送广播,并唤醒设备 //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)一些,因为系统可能会将几个差不多的闹钟合并为一个来执行,减少设备的唤醒次数。 //void cancel(PendingIntent operation)取消一个设置的闹钟 //void setTimeZone(String timeZone) //设置系统的默认时区。需要android.permission.SET_TIME_ZONE权限 // //setRepeating方法有4个参数,这些参数的含义如下: //type:表示警报类型,一般可以取的值是AlarmManager.RTC和AlarmManager.RTC_WAKEUP。 //如果将type参数值设为AlarmManager.RTC,表示是一个正常的定时器,如果将type参数值设为AlarmManager.RTC_WAKEUP, //除了有定时器的功能外,还会发出警报声(例如,响铃、震动)。 //triggerAtTime:第1次运行时要等待的时间,也就是执行延迟时间,单位是毫秒。 //interval:表示执行的时间间隔,单位是毫秒。 //operation:一个PendingIntent对象,表示到时间后要执行的操作。PendingIntent与Intent类 //似,可以封装Activity、BroadcastReceiver和Service。但与Intent不同的是,PendingIntent可以脱离应用程序而存在。 // //calendar.getTimeInMillis()返回从格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000到Calendar对象表示的时间之间的毫秒数

import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
public class TimeTask extends Activity {
private Calendar calendar;
private AlarmManager am;
private PendingIntent pendingIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

    calendar = Calendar.getInstance();  

    calendar.setTimeInMillis(System.currentTimeMillis());  
    //set(f, value) changes field f to value. 设置监听时间的时分秒  
    int hourOfDay = 23,minute = 59;  
    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);  
    calendar.set(Calendar.SECOND, 0);  
    calendar.set(Calendar.MILLISECOND, 0);  
    Intent intent = new Intent("com.buscall.alarm");  
    intent.putExtra("time", calendar.getTimeInMillis());  
    pendingIntent = PendingIntent.getBroadcast(TimeTask.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);  
    //获取系统进程  
    am = (AlarmManager)getSystemService(ALARM_SERVICE);  
    am.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);  
    //设置周期!!  
    am.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), (24*60*60*1000), pendingIntent);  
    String tmps = "设置闹钟时间为:"+format(hourOfDay)+":"+format(minute);  
    System.out.println(tmps);  
    IntentFilter filter = new IntentFilter();  
    filter.addAction("com.buscall.alarm");  
    registerReceiver(TimeReceiver, filter);  
}  
@Override  
protected void onDestroy() {  
    am.cancel(pendingIntent);  
    unregisterReceiver(TimeReceiver);  
    super.onDestroy();  
}  
private BroadcastReceiver TimeReceiver = new BroadcastReceiver() {  
    @Override  
    public void onReceive(Context context, Intent intent) {  
        String action = intent.getAction();  
        if (action.equals("com.buscall.alarm")||action=="com.buscall.alarm") {  
            System.out.println("到时间了:"+getIntent().getStringExtra("time"));  
        }  
    }  
};  
/**8:8 format 08:08*/  
private String format(int x) {  
    String s = ""+x;  
    if(s.length() == 1)  
        s = "0"+s;  
    return s;  
}  

}

© 著作权归作者所有

共有 人打赏支持
huiyun-yoyo
粉丝 1
博文 42
码字总数 33793
作品 0
瑞安
程序员
Android之AlarmManager

AlarmManager 包含的主要方法: // 取消已经注册的与参数匹配的定时器 void cancel(PendingIntent operation) //注册一个新的延迟定时器void set(int type, long triggerAtTime, PendingInt...

晨曦之光 ⋅ 2012/03/01 ⋅ 4

Android中的定时器AlarmManager

在Android上常用的定时器有两种,一种是Java.util.Timer,一种就是系统的AlarmService AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一...

程序袁_绪龙 ⋅ 2014/12/01 ⋅ 0

Android 平台上长连接的实现

Android 平台上长连接的实现 为了不让 NAT 表失效,我们需要定时的发心跳,以刷新 NAT 表项,避免被淘汰。 Android 上定时运行任务常用的方法有2种,一种方法用 Timer,另一种是AlarmManage...

jeffzhao ⋅ 2013/02/28 ⋅ 1

Android手机休眠后时间不准确的解决方案

上一篇讲到了计时的几种方法,在虚拟机中不会出现问题,但是在真机测试中,会遇到这样一种情况: 在手机进行休眠状态后,原来的睡60秒时间,大约变成了睡7分钟左右才再执行.这一直让我很不解,也...

长平狐 ⋅ 2012/09/03 ⋅ 0

AlarmManager 闪退之后唤醒应用

AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmMa...

Carbenson ⋅ 2016/11/23 ⋅ 0

Android设置多个定时器时只有最后一个定时器有效的问题

AlarmManager的常用方法有三个: (1)set(int type,long startTime,PendingIntent pi); 该方法用于设置一次性闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟执行时间,第三个参数表示闹...

亭子happy ⋅ 2013/10/25 ⋅ 0

Android中的AlarmManager的使用

1、AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,Alarm...

墨梅 ⋅ 2014/10/24 ⋅ 0

AlarmManager类的应用(实现闹钟功能)

1、AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用,实现...

rotiwen ⋅ 2013/03/15 ⋅ 0

AlarmManager-系统推荐的定时任务

近期leader提了很多这样的需求:每隔几个小时拉取服务器的配置信息存在本地、每隔一段时间跟服务端校对一下本地时间、每隔一段时间上传一下本地日志等等。其实这些本质都是定时任务,隔一段时...

zly921112 ⋅ 2016/12/16 ⋅ 0

AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作

AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似。都有两种相似的用法:(1)在指定时长后执行某...

z.net ⋅ 2013/09/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部