Android基于AlarmManager实现用户在线心跳功能示例

本文实例讲述了Android基于AlarmManager实现用户在线心跳功能。分享给大家供大家参考,具体如下:

在做即时通信或者其他检测是否在线等操作时要用到心跳。比较常用的是AlarmManager全局定时器 去实现。

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);

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android布局layout技巧总结》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android 使用AlarmManager和NotificationManager来实现闹钟和通知栏

    实现闹钟运行的效果如下: 通知栏的运行后效果图如下: 布局文件(activity_main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&qu

  • Android开发之AlarmManager的用法详解

    Android中的AlarmManager实质上是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver). 一.概述: 该类提供一种访问系统闹钟服务的方式,允许你去设置在将来的某个时间点去执行你的应用程序.当你的闹钟响起(时间到)时,在它上面注册的一个意图(Intent)将会被系统以广播发出,然后自动启动目标程序,如果它没有正在运行.注册的闹钟会被保留即使设备处于休眠中(如果闹钟

  • Android闹铃服务AlarmManager用法深入分析

    本文实例讲述了Android闹铃服务AlarmManager用法.分享给大家供大家参考,具体如下: 对应AlarmManage有一个AlarmManagerServie服务程 序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册下来的各类闹铃并适时的设置即将触发的闹铃给闹铃设备(在系统中,linux实现的设备名 为"/dev/alarm"),并且一直监听闹铃设备,一旦有闹铃触发或者是闹铃事件发生,AlarmManagerServie服务程序就会遍历闹铃列 表找到相应的注册闹铃并

  • Android手机闹钟服务AlarmManagerk开发案例

    AlarmManager通常用来开发手机闹钟,并且它是一个全局定时器,可在指定时间或指定周期启动其他组件(包括Activity,Service,BroadcastReceiver) 获取AlarmManager对象: getSystemService(Service.ALARM_SERVICE) 调用其中的方式设置定时器启动指定组件: set(int type,long triggerAtTime,PendingIntent operation)设置在TriggerAtTime时间启动由oper

  • Android中AlarmManager基本用法分析

    本文实例讲述了Android中AlarmManager基本用法.分享给大家供大家参考,具体如下: AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent.简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent. 对应AlarmManager更深层的了解可以参考: http://www.jb51.net/article/90491.htm android提供了四种类型的闹钟: ① ELAPSED_REALT

  • Android编程使用AlarmManager设置闹钟的方法

    本文实例讲述了Android编程使用AlarmManager设置闹钟的方法.分享给大家供大家参考,具体如下: package com.Aina.Android; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; /** * com.Aina.Android * Pro_AlarmM

  • Android基于AlarmManager实现用户在线心跳功能示例

    本文实例讲述了Android基于AlarmManager实现用户在线心跳功能.分享给大家供大家参考,具体如下: 在做即时通信或者其他检测是否在线等操作时要用到心跳.比较常用的是AlarmManager全局定时器 去实现. AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟.其实它的作用和Timer有点相似.都有两种相似的用法:(1)在指定时长后执行某项操作(2)周期性的执行某项操作 AlarmManager对象配合Intent使用,可以定时的开启一个Activity,发送一个

  • Android 基于百度语音的语音交互功能(推荐)

    项目里面用到了语音唤醒功能,前面一直在用讯飞的语音识别,本来打算也是直接用讯飞的语音唤醒,但是讯飞的语音唤醒要收费,试用版只有35天有效期.只好改用百度语音,百度语音所有功能免费,功能也比较简单实用,包括语音识别,语音合成和语音唤醒,正好可以组成一套完整的语音交互功能. 效果图: 首先是语音唤醒功能,说出关键词即可叫语音识别,唤醒成功会有语音提示,这里采用了百度语音的合成功能.然后百度语音识别会根据wifi情况自动切换在线或者离线识别,但是离线识别只能识别已经导入的关键词,而且离线第一次识别需要

  • 基于PHP实现用户登录注册功能的详细教程

    教程前先给大家看看小编的实现成果吧! 图1: 图2: 图3: 教程: 实现这个功能我们需要五个php文件: login.php (登录界面,如图2) <!DOCTYPE html> <html><head> <title>登录</title> <meta name="content-type"; charset="UTF-8"> </head><body> <div

  • 基于PyQt5实现图转文功能(示例代码)

    目录 一.界面PicZ.ui可参考之前的文章如何实现,程序代码如下: 二.main.py实现主要功能程序如下: 三.最后在主程序中加入以上子程序. 四.总结 PyQt是Qt框架的Python语言实现,是最强大的GUI库之一.PyQt提供了一个设计良好的窗口控件集合,具有更方便的操作性.学过VB的同学会知道,相比与VB的使用,在界面设计上元素更丰富. 本文就是基于PyQt5完成的图转文功能,先看界面: 一.界面PicZ.ui可参考之前的文章如何实现,程序代码如下: from PyQt5 impor

  • 基于WPF实现用户头像选择器的示例代码

    目录 实现思路 核心代码 参考资料 实现思路 制作一个用户头像选择器仿 WeGame 制作一个用户头像选择Canvas为父控件所实现,展示图片使用Image,Path当作上方的蒙版; Canvas:主要用途方便移动Image,设置ClipToBounds="True"裁剪为一个正方形200x200做为主要展示区域; Image:展示需要裁剪的图片: Path:CombinedGeometry[1]绘制蒙版大小200x200效果如下: 当选择一个本地图片的时候判断宽与高谁更大,谁小就将它

  • Android通过AlarmManager类实现简单闹钟功能

    Android通过AlarmManager类实现闹钟,供大家参考,具体内容如下 简介 闹钟是生活中最常用的功能了,很多App都可以加入该功能,提醒用户某个时刻要做的事情.在Android系统中可以通过AlarmManager类实现闹钟,AlarmManager类是专门用来设定在某个指定的时间去完成指定的事件.AlarmManager提供了访问系统警报的服务,只要在程序中设置了警报服务,AlarmManager就会通过onReceive()方法去还行这些事件,就算系统处于待机状态,同样不会影响运行

  • Android基于Sqlite实现注册和登录功能

    Android中基于Sqlite实现注册和登录功能,供大家参考,具体内容如下 前言 写这篇博客主要是为了巩固一下学的Sqlite知识以及梳理一下这个项目的逻辑 实现逻辑 项目的图片结构图如下 代码 user class public class User {     private String name;    //用户名     private String password;     //密码     public User(String name, String password) {

  • Laravel框架基于中间件实现禁止未登录用户访问页面功能示例

    本文实例讲述了Laravel框架基于中间件实现禁止未登录用户访问页面功能.分享给大家供大家参考,具体如下: 1.生成中间件 [root@localhost MRedis]# php artisan make:middleware CheckLogin Middleware created successfully. 2.实现中间件,在app\http\middleware\CheckLogin.php public function handle($request, Closure $next)

  • 基于ASP实现QQ在线查询功能

    本文给大家分享的qq在线查询功能代码非常简单,具体内容如下: 这段程序的方法是利用XMLHTTP来读取腾讯网站的相应HTML代码获取QQ的头像,根据这个想法,我们还可以抓取很多其他网站的信息,如天气预报.新闻等等. <script language="JavaScript"> <!-- function getFaceImg(QQcode) { var Re=new RegExp("^[1-9]{1}/d+$","g"); if

  • Android基于OkHttp实现文件上传功能

    本文实例为大家分享了Android基于OkHttp实现文件上传的具体代码,供大家参考,具体内容如下 一.相关概述 Android请求访问服务端大多数情况下依旧是使用http协议,故而可以参照web端的数据传输形式来实现. multipart/form-data是浏览器提交表单上传文件的一种方式. 有关于http的get,post请求大家可以自行百度了解. OkHttp是一款优秀的HTTP框架,它支持get请求和post请求,支持基于Http的文件上传和下载,支持加载图片,支持下载文件透明的GZI

随机推荐