Android中的定时器Timer、AlarmManager、CountDownTimer的使用

原创 2015年11月20日 11:05:24

1、Timer和TimerTask的使用

java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。

(1)创建一个Timer

java.util.Timer timer = new java.util.Timer(true);   
// true 说明这个timer以daemon方式运行(优先级低,   
// 程序结束timer也自动结束),注意,javax.swing   
// 包中也有一个Timer类,如果import中用到swing包,   
// 要注意名字的冲突。 

(2)创建一个TimerTask

TimerTask task = new TimerTask() {   
public void run() {   
... //每次需要执行的代码放到这里面。   
}   
}; 

(3)Timer调度执行TimerTask

//以下是几种调度task的方法:   

timer.schedule(task, time);   
// time为Date类型:在指定时间执行一次。   

timer.schedule(task, firstTime, period);   
// firstTime为Date类型,period为long   
// 从firstTime时刻开始,每隔period毫秒执行一次。   

timer.schedule(task, delay)   
// delay 为long类型:从现在起过delay毫秒执行一次   

timer.schedule(task, delay, period)   
// delay为long,period为long:从现在起过delay毫秒以后,每隔period   
// 毫秒执行一次。

2、AlarmManager(全局定时器/闹钟)

AlarmManager的作用是:在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent。

AlarmManager提供的方法:

void set(int type, long triggerAtTime, PendingIntent operation) 
设置一个闹钟 

void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation) 
设置一个会重复的闹钟

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

(1)type类型
ELAPSED_REALTIME
在指定的延时过后,发送广播,但不唤醒设备。

ELAPSED_REALTIME_WAKEUP
在指定的演示后,发送广播,并唤醒设备

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

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

(2)内置的几个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权限 

在指定时长后执行某项操作

//操作:发送一个广播,广播接收后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();

周期性的执行某项操作

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);

3、CountDownTimer(倒计时计数器)

定时执行在一段时间后停止的倒计时,在倒计时执行过程中会在固定间隔时间得到通知。

构造函数

public CountDownTimer (long millisInFuture, long countDownInterval)

参数

millisInFuture 从开始调用start()到倒计时完成并onFinish()方法被调用的毫秒数。(倒计时时间,单位毫秒)
countDownInterval 接收onTick(long)回调的间隔时间。(单位毫秒)

公共方法
public final void cancel ()
取消倒计时(取消后,再次启动会重新开始倒计时)

public abstract void onFinish ()
倒计时完成时被调用

public abstract void onTick (long millisUntilFinished)
固定间隔被调用
参数 millisUntilFinished 倒计时剩余时间。

public synchronized final CountDownTimer start ()
启动倒计时

new CountdownTimer(30000, 1000) {  
     public void onTick(long millisUntilFinished) {  
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);  
     }  
     public void onFinish() {  
         mTextField.setText("done!");  
     }  
 }.start(); 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android定时器,CountDownTimer,AlarmManager

一,Timer TimerTask 参考的Java中的定时器和TimerTask的在安卓中的用法 在开发中我们有时会有这样的需求,即在固定的每隔一段时间执行某一个任务。比如UI上的控件...

Android中使用CountDownTimer封装CountDownUtil,制作一个简易定时器

编写不易,如有转载,请声明出处: 梦回河口: Demo展示图片布局代码// (layout)activity_main.xml <RelativeLayout xmlns:android="h...

使用AlarmManager启动广播、服务、页面(Android定时器)

AlarmManager是Android中的一种系统级别的提醒服务,它会为我们在特定的时刻广播一个指定的Intent。而使用Intent的时候,我们还需要它执行一个动作,如startActivity,...

Timer和CountDownTimer的使用

Timer和CountDownTimer的使用

Android中Timer定时器的使用

Android中好几种定时的机制,其中Timer定时器经常被用到,其中有很多值得注意的地方,Timer定时器主要用来定时一段时间之后来执行某种任务Timer timer = new Timer();...

Android 倒数定时器CountDownTimer

实现倒计时的效果例子:发送验证码按钮效果图:/** * 倒计时 * * @author admin * */ public class MainActivity extends Acti...

Android倒计时定时器CountDownTimer的用法

Android关于定时器Timer的定义及用法 关于倒计时定时器的用法,这涉及到一个CountDownTimer
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)