android 之AlarmManager 系统闹钟 (2)

周期发送

我们已经完成了一个一次性的告警小例子,现在我们要实现一个重复周期性告警的小例子。代码如下:

private static int REQUEST_REPEAT_CODE = REQUEST_CODE + 1; 

public void sendRepeatingAlarm(int intervalSecs){        
    Calendar cal = Utils.getTimeAfterInSecs(10); 
    mReport.reportBack(tag, "测试重复alarm,间隔时间" + intervalSecs + "秒,首次触发时间"
            + Utils.getDateTimeString(cal));
 
    
    Intent intent = new Intent(mContext,TestReceiver.class); 
    intent.putExtra("message", "Repeat alarm" );      
    PendingIntent pi = PendingIntent.getBroadcast(mContext, REQUEST_REPEAT_CODE, intent, 0);

    AlarmManager am = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP,
            cal.getTimeInMillis(), 
            intervalSecs * 1000, 
            pi);
        

一旦我们通过告警管理器的setRepeating()设置周期发送的告警,即时关闭APP,告警管理器仍会继续按期发送,必须通过告警管理器进行关闭。

取消告警

取消alarm的代码如下:

public void cancelRepeatingAlarm(){ 
    mReport.reportBack(tag, "停止重复alarm"); 
    Intent intent = new Intent(mContext,TestReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(mContext, REQUEST_REPEAT_CODE, intent, 0);
    //要取消告警,首先构建一个同样request_code和内容(intent,包括向如同的目标接收器,但不包括extras,因为extras不用于判断intent的唯一性)的pending intent,然后通过告警管理器的cancel()进行删除
    AlarmManager am = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);

    am.cancel(pi); 

 小例子代码在:Pro Android学习:Alarm Manager小例子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值