定时器刷新详解(程序介绍)

来源:电子发烧友整理 作者:2018年01月26日 16:09
关键词:程序定时器

本文为大家介绍定时器刷新的详细程序。

1、定时刷新 只刷新一次

首先要发送一个广播 PendingTIntent.getBroadcast()就类似于一个sendBroadcast

里面有四个参数 第一个就是context 第二个参数是个发送端的私人参数,起区分作用 第三个intent 第四个 flags参数可以指定PendingIntent的一些行为特点,是用来针对Intent.fillIn() ,这里面没有用到0即可。

定时器刷新详解(程序介绍)

PendingTIntent 核心就是异步激发 有兴趣的可以看

PnedingTIngtent详解

am.set()方法用来激发,第一个参数是闹钟的类型 就不赘述了 第二个就是开始时间()

这个参数的类型要根据前一个闹钟的类型来的 , RTC_WAKEUP RTC POWER_OFF_WAKEUP使用的绝对时间,其他的类型就是相对时间 ,相对时间就是相对于开机时运行的时间,绝对时间就是当前的时间。

public staTIc void sendUpdateBroadcast(Context context,long time){

AlarmManager am = context.getSystemService(Context.ALARM_SERVICE);

Intent i = new Intent(conext, UpdateReceiver.class);

i.putExtra(“time”, time);//time参数是刷新间隔

PendingIntent pendingIntent = PendingIntent.getBroadcast(contexxt, 0, i, 0);

//我这个是系统现在时间加上time时间进行刷新

am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + time, pendingIntent);

}

然后需要自定义一个接受器刷新的动作在这里面执行

public static class UpdateReceiver extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {

long times=intent.getLongExtra(“time”,0);

Toast.makeText(context, “开始刷新”+intent.getLongExtra(“time”,0), Toast.LENGTH_SHORT).show();

}

}

2、定时刷新 根据间隔时间一直刷新

类似于闹钟

am.setRepeating ()第二个参数就是第一次刷新时间 (如果时间已经过了,会马上响应一次),第三个就是间隔时间 。注意此广播非覆盖的 如若要改变刷新时间一定要先取消此广播

public static void sendBroadcastRepeat(Context ctx,int hour,int minuter){

Intent intent =new Intent(ctx, RepeatReceiver.class);

intent.putExtra(“hour”,hour);

intent.putExtra(“minuter”,minuter);

PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx,0, intent, 0);

Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.HOUR_OF_DAY, hour);

calendar.set(Calendar.MINUTE, minuter);

calendar.set(Calendar.SECOND, 00);

calendar.set(Calendar.MILLISECOND, 0);

AlarmManager am = getAlaramManager(ctx);

am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), 1000 * 60 * 60 * 24, pendingIntent);

}

同样也要写一个接收器

public static class RepeatReceiver extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {

Toast.makeText(context, “定时刷新”, Toast.LENGTH_SHORT).show();

}

}

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
声明:电子发烧友网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:

相关阅读

发表评论

elecfans网友

分享到:

用户评论(0