当前位置: 移动技术网 > IT编程>移动开发>Android > Android基于AlarmManager实现用户在线心跳功能示例

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

东营征婚,真全女格斗3.0,捐款小品

本文实例讲述了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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网