`

postDelayed方法和removeCallbacks方法的使用

 
阅读更多

方法postDelayed的作用是延迟多少毫秒后开始运行,而removeCallbacks方法是删除指定的Runnable对象,使线程对象停止运行。

方法声明如下:

  1. public final boolean postDelayed (Runnable r, long delayMillis) 

其中参数Runnable r在Handler对象所运行的线程中执行。

创建名称为handler2的Android项目,Main.java的核心代码如下:

  1. public class Main extends Activity {  
  2.     private Button button1;  
  3.     private Button button2;  
  4.  
  5.     private Handler handler = new Handler();  
  6.  
  7.     private int count = 0;  
  8.  
  9.     private Runnable runnableRef = new Runnable() {  
  10.         public void run() {  
  11.             Log.v("2", Thread.currentThread().getName());  
  12.             count++;  
  13.             Log.v("!", "count=" + count);  
  14.             handler.postDelayed(runnableRef, 1000);  
  15.         }  
  16.     };  
  17.  
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.  
  23.         Log.v("1", Thread.currentThread().getName());  
  24.  
  25.         button1 = (Button) this.findViewById(R.id.button1);  
  26.         button2 = (Button) this.findViewById(R.id.button2);  
  27.  
  28.         button1.setOnClickListener(new OnClickListener() {  
  29.             public void onClick(View arg0) {  
  30.                 Thread thread = new Thread(runnableRef);  
  31.                 thread.start();  
  32.                 Log.v("!!!!!!!!!!!!!", "end");  
  33.             }  
  34.         });  
  35.  
  36.         button2.setOnClickListener(new OnClickListener() {  
  37.             public void onClick(View arg0) {  
  38.                 handler.removeCallbacks(runnableRef);  
  39.             }  
  40.         });  
  41.  
  42.     }  
  43. }  

 

程序运行后单击button1按钮开始循环,count累加1,运行结果如图6.41所示。

 
图6.41  循环加1效果

from:http://book.51cto.com/art/201211/363310.htm

 

 

分享到:
评论

相关推荐

    在android中使用定时器的方法

    Handler与线程的sleep方法简单但不够精确,Handler的postDelayed方法易于理解和使用,而Handler与Timer及TimerTask的结合则提供了更精确的定时控制。需要注意的是,过度使用线程和定时器可能会消耗大量系统资源,...

    Android中定时器的3种实现方法

    这种方法更为简单,直接在主线程中使用Handler的postDelayed()方法,传入Runnable对象和延迟时间。Runnable的run()方法会在指定时间后被调用。停止计时器时,只需调用removeCallbacks()方法移除Runnable。具体步骤...

    Android倒计时的开始与停止 剩余时分秒的展示

    本文详细介绍了 Android 倒计时的开始与停止、剩余时分秒的展示,涵盖了 Handler、Runnable、postDelayed 方法、handleMessage 方法、onDestroy 方法、removeCallbacks 方法、formatLongToTimeStr 方法等多个知识点...

    android Handler详细使用方法实例

    在上述代码中,我们看到了如何使用Handler和Runnable来实现一个简单的线程启动和停止的逻辑,同时通过postDelayed方法实现了一个延时任务的循环执行。这种模式在Android开发中非常常见,它体现了Android UI编程的单...

    定时器理论

    4. 停止计时器可以使用 removeCallbacks() 方法。 三、采用 Handler 与 Timer 及 TimerTask 结合的方法 这个方法使用 Timer 和 TimerTask 来实现定时任务,步骤如下: 1. 定义定时器、定时器任务及 Handler 句柄...

    android中Handler的使用方法和总结

    Android 中 Handler 的使用方法和总结 Handler 是 Android 中的一种非常重要的组件,它起到了十分重要的作用。Handler 主要用于异步消息的处理,当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回...

    Android定时器实现的几种方式整理及removeCallbacks失效问题解决

    本篇文章主要探讨了两种使用Handler + Runnable的方式实现定时器,并针对`removeCallbacks()`失效的问题进行了分析。 首先,我们来看第一种实现定时器的方法。创建一个Handler对象并实例化一个Runnable,然后在...

    基于Android中实现定时器的3种解决方法

    在Android开发中,定时器是实现周期性任务或者延时操作的重要工具。本文将详细介绍三种在Android中实现定时器的方法。 一、Handler与线程的...对于短暂的、无阻塞的定时任务,Handler的postDelayed方法则足够使用。

    Handler方法

    - 如果`Handler`不再使用,应通过`removeCallbacks`和`removeMessages`方法清除回调和消息,避免内存泄漏。 通过上述内容,我们不仅了解了`Handler`机制的基本原理和使用方法,还掌握了如何在实际项目中合理地运用...

    Android定时器功能实现方法

    2. 使用`postDelayed()`或`sendEmptyMessageDelayed()`方法设置延迟执行的任务。 ```java Runnable runnable = new Runnable() { @Override public void run() { // 这里编写需要定时执行的代码 handler....

    android平台定时器介绍

    这种实现更加简洁,只需要创建一个Handler实例和一个Runnable对象,然后通过Handler的`postDelayed()`方法设定每隔一段时间执行Runnable。这种方式不会阻塞主线程,适合于执行轻量级的任务。若需停止定时器,只需...

    android 计时器

    如果需要取消已设置的计时器,可以调用Handler的removeCallbacks()方法,传入之前用于postDelayed()的Runnable对象。这将取消尚未执行的Runnable。例如: ```java handler.removeCallbacks(timerRunnable); ```...

    自定义跑马灯

    4. **启动和停止**:提供开始和停止跑马灯的方法,可以通过调用`removeCallbacks()`和`postDelayed()`来控制滚动状态。 5. **动画效果**:如果需要更平滑的滚动效果,可以考虑使用ValueAnimator或者ObjectAnimator,...

    Android 自定义控件之垂直公告栏

    3. 实现滚动逻辑:我们可以使用`postDelayed()`和`removeCallbacks()`方法来实现定时滚动。在每次回调中,更新文本的位置,然后重新绘制视图。 4. 处理触摸事件:如果需要用户交互,还需重写`onTouchEvent()`方法,...

    使用handler 实现预约时间功能

    4. **预约时间功能实现**:要实现预约时间功能,可以使用`Handler`的`postDelayed()`或`sendMessageDelayed()`方法。这两个方法可以安排一个`Runnable`或`Message`在指定的延迟后执行。例如,如果你想要在5秒后执行...

    android demo,使用Runnable和Handler的特性实现每个3s的定时器

    `Handler`有两种主要的方法:`postDelayed()`和`sendMessageDelayed()`. 这两个方法都可以用来在指定的时间延迟后执行一个任务,这里的任务通常是一个`Runnable`对象。 在这个`android demo`中,我们可能看到以下...

    android双击返回键退出应用(三种实现方法)

    第三种方法是使用`Handler`和`Message`来处理返回键的双击事件。这种方法与第一种类似,但是利用了`Handler`的消息机制,可以在主线程中处理事件。 ```java public class MainActivity extends AppCompatActivity {...

    Android简单计时器实现

    - 定义开始和结束计时的方法,分别在其中调用`post()`或`removeCallbacks()`。 - 在按钮的点击事件中,调用这些方法。 4. **注意事项** - 计时器的精度受系统调度影响,可能不完全精确,但通常误差很小,可以...

    Android实现定时器的3种方法

    常见的三种方法包括:Handler结合线程的`sleep(long)`方法、Handler的`postDelayed(Runnable, long)`方法以及Handler与`Timer`和`TimerTask`的结合。下面我们将深入探讨这三种方法。 一、Handler与线程的`sleep...

Global site tag (gtag.js) - Google Analytics