当前位置: 移动技术网 > IT编程>移动开发>Android > Android中AlarmManager基本用法分析

Android中AlarmManager基本用法分析

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

常用英语口语900句,张铁桥,格力福满园

本文实例讲述了android中alarmmanager基本用法。分享给大家供大家参考,具体如下:

alarmmanager的作用文档中的解释是:在特定的时刻为我们广播一个指定的intent。简单的说就是我们设定一个时间,然后在该时间到来时,alarmmanager为我们广播一个我们设定的intent。

对应alarmmanager更深层的了解可以参考:

android提供了四种类型的闹钟:

① elapsed_realtime

在指定的延时过后,发送广播,但不唤醒设备。

② elapsed_realtime_wakeup

在指定的演示后,发送广播,并唤醒设备
延时是要把系统启动的时间systemclock.elapsedrealtime()算进去的,具体用法看代码。

③ rtc

在指定的时刻,发送广播,但不唤醒设备

④ rtc_wakeup

在指定的时刻,发送广播,并唤醒设备

alarmmanager提供的方法:

1. void set(int type, long triggerattime, pendingintent operation)
设置一个闹钟

2. void setrepeating(int type, long triggerattime, long interval, pendingintent operation)
设置一个会重复的闹钟

3. void setinexactrepeating(int type, long triggerattime, long interval, pendingintent operation)
设置一个重复闹钟的不精确版本,它相对而言更节能(power-efficient)一些,因为系统可能会将几个差不多的闹钟合并为一个来执行,减少设备的唤醒次数。

内置的几个interval为:

interval_fifteen_minutes
interval_half_hour
interval_hour
interval_half_day
interval_day

如果你将其设为day,那么可能这一天中的所有闹钟都会被合并掉。

void cancel(pendingintent operation)

取消一个设置的闹钟

void settimezone(string timezone)

设置系统的默认时区。需要android.permission.set_time_zone权限

// 首先创建receiver
public class alarmreceiver extends broadcastreceiver {
  @override
  public void onreceive(context context, intent intent) {
    toast.maketext(context, "alarm", toast.length_short).show();
  }
}

// manifest中申明,并不需要intent-filter,我们是明确指定发到哪个receiver的
<receiver android:name="yuan.receivers.alarmreceiver" />

pendingintent:简单的说就是在intent上在加个指定的动作。intent的话,我们还需要在执行startactivity、startservice或sendbroadcast才能使intent有用。而pendingintent的话就是将这个动作包含在内了,如pendingintent.getbroadcast就包含了sendbroadcast的动作。

5s后发送指定广播

alarmmanager alarmmgr = (alarmmanager) getsystemservice(context.alarm_service);
intent intent = new intent(getapplicationcontext(), alarmreceiver.class);
int requestcode = 0;
pendingintent pendintent = pendingintent.getbroadcast(getapplicationcontext(),
    requestcode, intent, pendingintent.flag_update_current);
// 5秒后发送广播,只发送一次
int triggerattime = systemclock.elapsedrealtime() + 5 * 1000;
alarmmgr.set(alarmmanager.elapsed_realtime, triggerattime, pendintent);

5s后发送指定广播,然后每个10秒重复发送广播

alarmmanager alarmmgr = (alarmmanager) getsystemservice(context.alarm_service);
intent intent = new intent(getapplicationcontext(), alarmreceiver.class);
int requestcode = 0;
pendingintent pendintent = pendingintent.getbroadcast(getapplicationcontext(),
    requestcode, intent, pendingintent.flag_update_current);
// 5秒后发送广播,然后每个10秒重复发广播。广播都是直接发到alarmreceiver的
int triggerattime = systemclock.elapsedrealtime() + 5 * 1000;
int interval = 10 * 1000;
alarmmgr.setrepeating(alarmmanager.elapsed_realtime_wakeup, triggerattime, interval, pendintent);

取消一个闹钟

alarmmanager alarmmgr = (alarmmanager) getsystemservice(context.alarm_service);
intent intent = new intent(getapplicationcontext(), alarmreceiver.class);
pendingintent pendintent = pendingintent.getbroadcast(getapplicationcontext(),
    0, intent, pendingintent.flag_update_current);
// 与上面的intent匹配(filterequals(intent))的闹钟会被取消
alarmmgr.cancel(pendintent);

更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android多媒体操作技巧汇总(音频,视频,录音等)》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结

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

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

相关文章:

验证码:
移动技术网