方法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

本文介绍了一个名为handler2的Android项目,重点阐述了如何使用Handler对象与Runnable接口实现线程的延迟执行和取消操作。通过创建Runnable对象并设置其执行逻辑,实现了循环累加计数的功能,并通过单击按钮启动和停止线程。演示了如何利用postDelayed方法延迟执行Runnable,以及removeCallbacks方法删除指定的Runnable对象,从而有效管理线程的运行状态。


7万+

被折叠的 条评论
为什么被折叠?



