当前位置: 移动技术网 > 移动技术>移动开发>Android > Android手机闹钟服务AlarmManagerk开发案例

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

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

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>

以上就是本文的全部内容,希望对大家学习android软件编程有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网