Android Handler post postDelayed postAtTime 简单说明及使用
2017-06-12 23:11
1381 查看
Android.os.Handler是android SDK中处理定时操作的核心类。通过Handler类,可以提交和处理一个Runnable对象。这个对象的run方法可以立刻执行,也可以在指定时间后执行(也可称为预约执行)。
Handler类主要可以使用如下3个方法来设置执行Runnable对象的时间:
从上面3个方法可以看出,第1个参数的类型都是Runnable,因此,在调用这3个方法之前,需要有一个实现Runnable接口的类,Runnable接口的代码如下:
在Runnable接口中只有一个run方法,该方法为线程执行方法。可以使用如下代码指定在5秒后调用run方法:
如果想在5秒内停止计时,可以使用如下代码:
除此之外,还可以使用postAtTime方法指定未来的某一个精确时间来执行Runnable对象,代码如下:
其中RunToast是一个实现Runnable接口的类,代码如下:
postAtTime的第2个参数表示一个精确时间的毫秒数,如果从当前时间算起,需要使用android.os.SystemClock.uptimeMillis()获得基准时间。
要注意的是,不管使用哪个方法来执行Runnable对象,都只能运行一次。如果想循环执行,必须在执行完后再次调用post、postAtTime或postDelayed方法。例如,在Main类的run方法中再次调用了postDelayed方法,代码如下:
运行本例后,单击【开始计数】按钮,5秒后,会在按钮上方显示计数信息。然后单击【15秒后显示Toast信息框】按钮,过15秒后,会显示一个Toast信息框,如图所示。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/22/babce0ac6e50d1f45b50dfba914acd64.gif)
原文地址:
http://book.51cto.com/art/201006/207064.htm
Handler类主要可以使用如下3个方法来设置执行Runnable对象的时间:
// 立即执行Runnable对象 public final boolean post(Runnable r); // 在指定的时间(uptimeMillis)执行Runnable对象 public final boolean postAtTime(Runnable r, long uptimeMillis); // 在指定的时间间隔(delayMillis)执行Runnable对象 public final boolean postDelayed(Runnable r, long delayMillis);
从上面3个方法可以看出,第1个参数的类型都是Runnable,因此,在调用这3个方法之前,需要有一个实现Runnable接口的类,Runnable接口的代码如下:
public interface Runnable { public void run(); // 线程要执行的方法 }
在Runnable接口中只有一个run方法,该方法为线程执行方法。可以使用如下代码指定在5秒后调用run方法:
Handler handler = new Handler(); handler.postDelayed(this, 5000);
如果想在5秒内停止计时,可以使用如下代码:
handler.removeCallbacks(this);
除此之外,还可以使用postAtTime方法指定未来的某一个精确时间来执行Runnable对象,代码如下:
Handler handler = new Handler(); // 在15秒后执行Runnable对象 handler.postAtTime(new RunToast(this){ }, android.os.SystemClock.uptimeMillis() + 15 * 1000);
其中RunToast是一个实现Runnable接口的类,代码如下:
class RunToast implements Runnable { private Context context; public RunToast(Context context) { this.context = context; } @Override public void run() { Toast.makeText(context, "15秒后显示Toast提示信息", Toast.LENGTH_LONG).show(); } }
postAtTime的第2个参数表示一个精确时间的毫秒数,如果从当前时间算起,需要使用android.os.SystemClock.uptimeMillis()获得基准时间。
要注意的是,不管使用哪个方法来执行Runnable对象,都只能运行一次。如果想循环执行,必须在执行完后再次调用post、postAtTime或postDelayed方法。例如,在Main类的run方法中再次调用了postDelayed方法,代码如下:
public void run() { tvCount.setText("Count:" + String.valueOf(++count)); // 再次调用postDelayed方法,5秒后run方法仍被调用,然后再一次调用postDelayed方法,这样就形成了 // 循环调用 handler.postDelayed(this, 5000); }
运行本例后,单击【开始计数】按钮,5秒后,会在按钮上方显示计数信息。然后单击【15秒后显示Toast信息框】按钮,过15秒后,会显示一个Toast信息框,如图所示。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/22/babce0ac6e50d1f45b50dfba914acd64.gif)
原文地址:
http://book.51cto.com/art/201006/207064.htm
相关文章推荐
- android 一个小例子说明handler和AlertDialog的简单使用
- Android中三种计时器Timer、CountDownTimer、handler.postDelayed的使用
- Android中三种计时器Timer、CountDownTimer、handler.postDelayed的使用
- android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)
- Android使用Handler的postDelayed(Runnable, long)方法实现定时任务
- android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)
- Android使用Handler+postDelayed实现简单计时器
- android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)
- android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)
- android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)
- android 使用handler 与postDelayed时注意项
- 简单使用handler.postDelayed()方法
- android Handler 简单使用介绍
- Android-Socket多线程应用(聊天室客户端、Handler的简单使用)
- Android异步更新UI的方式之使用Handler的post(Runnabel r)方法
- android_handler简单使用,测试
- listView 添加addHeaderView和addFooterView以及handler.postDelayed的使用
- android开发步步为营之61:android定时任务之Handler.postDelayed
- Android使用异步的误区(关于Handler.post的操作方式)
- Android初学习 - Handler使用的简单例子