文档章节

android开发笔记之 AlarmManager(闹钟服务)

Mr_Nice
 Mr_Nice
发布于 2016/05/22 20:01
字数 534
阅读 29
收藏 1
点赞 2
评论 0

手机闹钟服务AlarmManager

AlarmManager通常用来开发手机闹钟,并且它是一个全局定时器,可在指定时间或指定周期启动其他组件(包括Activity,Service,BroadcastReceiver)

获取AlarmManager对象

getSystemService(Service.ALARM_SERVICE)

调用其中的方式设置定时器启动指定组件:

set(int type,long triggerAtTime,PendingIntent operation)设置在TriggerAtTime时间启动由operation参数指定的组件。

第一个参数指定定时服务的类型,其值可以使:
ELAPSED_REALTIME:指定从现在开始时间过了一定时间后启动operation对相应的组件。
ELAPSED_REALTIME_WAKEUP:指定从现实开始时间过了一定时间后启动operation队形的组件,即使系统关机也会执行operation所对应的组件。
RTC:指定当系统调用System.currentTimeMillls()方法返回值与triggerAtTIme相等时启动operation所对应的组件。
RTC_WAKEUP:指定当系统调用System.currentTimeMillls()方法返回值与triggerAtTIme相等时启动operation所对应的组件,即使系统关机也会执行operation所对应的组件。

setInexactRepeationg(int type,long triggerAtTIme,long interval,PendingIntent operation):设置一个非精确的周期性任务。

setRepeating(int type,long triggerAtTIme,long interval,PendingIntent operation):设置一个周期性定时任务。

cancle(PendingIntent operation)取消AlarmManger定时服务

示例:

这里写图片描述

核心代码:

public class MainActivity extends Activity {

    private AlarmManager alarmManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取AlarmManager对象
        alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
    }

    public void btn(View view) {
        final Calendar c = Calendar.getInstance();
        TimePickerDialog dialog = new TimePickerDialog(this,
                new OnTimeSetListener() {
            //延迟意图(即闹钟的意图)
            PendingIntent paIntent = PendingIntent.getActivity(MainActivity.this, 
                    1, new Intent(MainActivity.this,SecondActivity.class), 
                    PendingIntent.FLAG_UPDATE_CURRENT);
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        //设置你所选择的时间
                        c.set(Calendar.HOUR_OF_DAY, hourOfDay);
                        c.set(Calendar.MINUTE, minute);
                        //第一个参数指定闹钟服务的类型
                        //第二个参数指定闹钟间隔的时间
                        //第三个参数指跳转闹钟的延迟意图
                        alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), paIntent);
                    }
                }, 
                //闹钟的初始值(时和分)
                c.get(Calendar.HOUR_OF_DAY),
                c.get(Calendar.MINUTE), 
                true);
        dialog.show();
    }
}

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.alarmmanager.MainActivity" >

    <Button
        android:onClick="btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btntext" />

</RelativeLayout> 

© 著作权归作者所有

共有 人打赏支持
Mr_Nice
粉丝 0
博文 47
码字总数 39947
作品 0
广州
关于使用AlarmManager的注意事项

最近在做一个需求:客户端按照规定的时间间隔向服务端发送定位。一看到这个需求就想到了使用 来实现。 经常被用来执行定时任务,比如设置闹铃、发送心跳包等。也许有人会有疑问:为什么不能使...

hejunbinlan ⋅ 06/15 ⋅ 0

Android设置闹钟的解决方案

Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深。下面记录一下,我解决Android闹钟设置的解决方案。 主要问题 API19开始AlarmManager的机制修改。...

Common1140 ⋅ 2016/07/28 ⋅ 0

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

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

rotiwen ⋅ 2013/03/15 ⋅ 0

彻底认识 PendingIntent

最近在写一个闹钟程序的时候使用到了 PendingIntent, 而且是两个地方用到,一个是 AlarmManager 定时的时候, 另一个是在点击通知进入应用的时候。其实我早就想深入研究一下 PendingIntent...

Jinux111 ⋅ 05/25 ⋅ 0

Android 轮询最佳实践 Service + AlarmManager+Thread

android中涉及到将服务器中数据变化信息通知用户一般有两种办法,推送和轮询。 消息推送是服务端主动发消息给客户端,因为第一时间知道数据发生变化的是服务器自己,所以推送的优势是实时性高...

yaly ⋅ 2015/05/07 ⋅ 0

Android中的AlarmManager的使用

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

墨梅 ⋅ 2014/10/24 ⋅ 0

AlarmManager-系统推荐的定时任务

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

zly921112 ⋅ 2016/12/16 ⋅ 0

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

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

亭子happy ⋅ 2013/10/25 ⋅ 0

Android 平台上长连接的实现

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

jeffzhao ⋅ 2013/02/28 ⋅ 1

Android笔记:定时提醒、闹钟实现

android要实现定时的功能那肯定就要用到闹铃相关的技术, 那么android闹铃实现是基于 AlarmManager 这个类的,首先我们来看一下它的几个主要的方法。 两个核心的方法 : private final IAla...

glblong ⋅ 2015/07/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部