打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
8.3.2 预约时间Handler - 51CTO.COM
预约时间Handler
http://book.51cto.com  2010-06-22 14:13  李宁  中国水利水电出版社  我要评论(0)

8.3.2  预约时间Handler

本节的例子代码所在的工程目录是src\ch08\ch08_handler

android.os.Handler是Android SDK中处理定时操作的核心类。通过Handler类,可以提交和处理一个Runnable对象。这个对象的run方法可以立刻执行,也可以在指定时间后执行(也可称为预约执行)。

Handler类主要可以使用如下3个方法来设置执行Runnable对象的时间:

  1. //  立即执行Runnable对象  
  2. public final boolean post(Runnable r);  
  3. //  在指定的时间(uptimeMillis)执行Runnable对象  
  4. public final boolean postAtTime(Runnable r, long uptimeMillis);  
  5. //  在指定的时间间隔(delayMillis)执行Runnable对象  
  6. public final boolean postDelayed(Runnable r, long delayMillis); 

从上面3个方法可以看出,第1个参数的类型都是Runnable,因此,在调用这3个方法之前,需要有一个实现Runnable接口的类,Runnable接口的代码如下:

  1. public interface Runnable   
  2. {  
  3.     public void run();          //  线程要执行的方法  

在Runnable接口中只有一个run方法,该方法为线程执行方法。在本例中Main类实现了Runnable接口。可以使用如下代码指定在5秒后调用run方法:

  1. Handler handler = new Handler();  
  2. handler.postDelayed(this, 5000); 

如果想在5秒内停止计时,可以使用如下代码:

  1. handler.removeCallbacks(this); 

除此之外,还可以使用postAtTime方法指定未来的某一个精确时间来执行Runnable对象,代码如下:

  1. Handler handler = new Handler();  
  2. handler.postAtTime(new RunToast(this)  
  3. {  
  4. }, android.os.SystemClock.uptimeMillis() + 15 * 
    1000);      //  在15秒后执行Runnable对象 

其中RunToast是一个实现Runnable接口的类,代码如下:

  1. class RunToast implements Runnable  
  2. {  
  3.     private Context context;  
  4.     public RunToast(Context context)  
  5.     {  
  6.         this.context = context;  
  7.     }  
  8.     @Override  
  9.     public void run()  
  10.     {  
  11.         Toast.makeText(context, "15秒后显
    示Toast提示信息", Toast.LENGTH_LONG).show();  
  12.     }  

postAtTime的第2个参数表示一个精确时间的毫秒数,如果从当前时间算起,需要使用android.os.SystemClock.uptimeMillis()获得基准时间。

要注意的是,不管使用哪个方法来执行Runnable对象,都只能运行一次。如果想循环执行,必须在执行完后再次调用post、postAtTime或postDelayed方法。例如,在Main类的run方法中再次调用了postDelayed方法,代码如下:

  1. public void run()  
  2. {  
  3.     tvCount.setText("Count:" + String.valueOf(++count));  
  4.     //  再次调用postDelayed方法,5秒后run方法仍被
    调用,然后再一次调用postDelayed方法,这样就形成了  
  5.     //  循环调用  
  6.     handler.postDelayed(this, 5000);  

运行本例后,单击【开始计数】按钮,5秒后,会在按钮上方显示计数信息。然后单击【15秒后显示Toast信息框】按钮,过15秒后,会显示一个Toast信息框,如图8.17所

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
android: Handler 学习一:概念理解与运用
【原】android 中定時器的幾種用法總結
Android Handler的使用(一)
Android开发资料
关于android中postDelayed方法的讲解
Android学习笔记(三一):线程:Message和Runnable
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服