方法postDelayed的作用是延迟多少毫秒后开始运行,而removeCallbacks方法是删除指定的Runnable对象,使线程对象停止运行。
方法声明如下:
- public final boolean postDelayed (Runnable r, long delayMillis)
其中参数Runnable r在Handler对象所运行的线程中执行。
创建名称为handler2的Android项目,Main.java的核心代码如下:
- public class Main extends Activity {
- private Button button1;
- private Button button2;
- private Handler handler = new Handler();
- private int count = 0;
- private Runnable runnableRef = new Runnable() {
- public void run() {
- Log.v("2", Thread.currentThread().getName());
- count++;
- Log.v("!", "count=" + count);
- handler.postDelayed(runnableRef, 1000);
- }
- };
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Log.v("1", Thread.currentThread().getName());
- button1 = (Button) this.findViewById(R.id.button1);
- button2 = (Button) this.findViewById(R.id.button2);
- button1.setOnClickListener(new OnClickListener() {
- public void onClick(View arg0) {
- Thread thread = new Thread(runnableRef);
- thread.start();
- Log.v("!!!!!!!!!!!!!", "end");
- }
- });
- button2.setOnClickListener(new OnClickListener() {
- public void onClick(View arg0) {
- handler.removeCallbacks(runnableRef);
- }
- });
- }
- }
程序运行后单击button1按钮开始循环,count累加1,运行结果如图6.41所示。
图6.41 循环加1效果 |
from:http://book.51cto.com/art/201211/363310.htm
相关推荐
Handler与线程的sleep方法简单但不够精确,Handler的postDelayed方法易于理解和使用,而Handler与Timer及TimerTask的结合则提供了更精确的定时控制。需要注意的是,过度使用线程和定时器可能会消耗大量系统资源,...
这种方法更为简单,直接在主线程中使用Handler的postDelayed()方法,传入Runnable对象和延迟时间。Runnable的run()方法会在指定时间后被调用。停止计时器时,只需调用removeCallbacks()方法移除Runnable。具体步骤...
本文详细介绍了 Android 倒计时的开始与停止、剩余时分秒的展示,涵盖了 Handler、Runnable、postDelayed 方法、handleMessage 方法、onDestroy 方法、removeCallbacks 方法、formatLongToTimeStr 方法等多个知识点...
在上述代码中,我们看到了如何使用Handler和Runnable来实现一个简单的线程启动和停止的逻辑,同时通过postDelayed方法实现了一个延时任务的循环执行。这种模式在Android开发中非常常见,它体现了Android UI编程的单...
4. 停止计时器可以使用 removeCallbacks() 方法。 三、采用 Handler 与 Timer 及 TimerTask 结合的方法 这个方法使用 Timer 和 TimerTask 来实现定时任务,步骤如下: 1. 定义定时器、定时器任务及 Handler 句柄...
Android 中 Handler 的使用方法和总结 Handler 是 Android 中的一种非常重要的组件,它起到了十分重要的作用。Handler 主要用于异步消息的处理,当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回...
本篇文章主要探讨了两种使用Handler + Runnable的方式实现定时器,并针对`removeCallbacks()`失效的问题进行了分析。 首先,我们来看第一种实现定时器的方法。创建一个Handler对象并实例化一个Runnable,然后在...
在Android开发中,定时器是实现周期性任务或者延时操作的重要工具。本文将详细介绍三种在Android中实现定时器的方法。 一、Handler与线程的...对于短暂的、无阻塞的定时任务,Handler的postDelayed方法则足够使用。
- 如果`Handler`不再使用,应通过`removeCallbacks`和`removeMessages`方法清除回调和消息,避免内存泄漏。 通过上述内容,我们不仅了解了`Handler`机制的基本原理和使用方法,还掌握了如何在实际项目中合理地运用...
2. 使用`postDelayed()`或`sendEmptyMessageDelayed()`方法设置延迟执行的任务。 ```java Runnable runnable = new Runnable() { @Override public void run() { // 这里编写需要定时执行的代码 handler....
这种实现更加简洁,只需要创建一个Handler实例和一个Runnable对象,然后通过Handler的`postDelayed()`方法设定每隔一段时间执行Runnable。这种方式不会阻塞主线程,适合于执行轻量级的任务。若需停止定时器,只需...
如果需要取消已设置的计时器,可以调用Handler的removeCallbacks()方法,传入之前用于postDelayed()的Runnable对象。这将取消尚未执行的Runnable。例如: ```java handler.removeCallbacks(timerRunnable); ```...
4. **启动和停止**:提供开始和停止跑马灯的方法,可以通过调用`removeCallbacks()`和`postDelayed()`来控制滚动状态。 5. **动画效果**:如果需要更平滑的滚动效果,可以考虑使用ValueAnimator或者ObjectAnimator,...
3. 实现滚动逻辑:我们可以使用`postDelayed()`和`removeCallbacks()`方法来实现定时滚动。在每次回调中,更新文本的位置,然后重新绘制视图。 4. 处理触摸事件:如果需要用户交互,还需重写`onTouchEvent()`方法,...
4. **预约时间功能实现**:要实现预约时间功能,可以使用`Handler`的`postDelayed()`或`sendMessageDelayed()`方法。这两个方法可以安排一个`Runnable`或`Message`在指定的延迟后执行。例如,如果你想要在5秒后执行...
`Handler`有两种主要的方法:`postDelayed()`和`sendMessageDelayed()`. 这两个方法都可以用来在指定的时间延迟后执行一个任务,这里的任务通常是一个`Runnable`对象。 在这个`android demo`中,我们可能看到以下...
第三种方法是使用`Handler`和`Message`来处理返回键的双击事件。这种方法与第一种类似,但是利用了`Handler`的消息机制,可以在主线程中处理事件。 ```java public class MainActivity extends AppCompatActivity {...
- 定义开始和结束计时的方法,分别在其中调用`post()`或`removeCallbacks()`。 - 在按钮的点击事件中,调用这些方法。 4. **注意事项** - 计时器的精度受系统调度影响,可能不完全精确,但通常误差很小,可以...
常见的三种方法包括:Handler结合线程的`sleep(long)`方法、Handler的`postDelayed(Runnable, long)`方法以及Handler与`Timer`和`TimerTask`的结合。下面我们将深入探讨这三种方法。 一、Handler与线程的`sleep...