没有合适的资源?快使用搜索试试~ 我知道了~
Android定时器实现的几种方式整理及removeCallbacks失效问题解决
1 下载量 161 浏览量
2021-01-20
09:29:00
上传
评论
收藏 62KB PDF 举报
温馨提示
试读
3页
实现定时器有很多种方式,在这里我简单的介绍几种方式 (1)使用Handler + Runnable的方式 代码如下: Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { //你要做的事 //…… System.out.println(Thread.currentThread().getName()); handler.postDelayed(runnable, 1000); } }; 然后调用handler.post(runnable);就能启
资源详情
资源评论
资源推荐
Android定时器实现的几种方式整理及定时器实现的几种方式整理及removeCallbacks失效失效
问题解决问题解决
实现定时器有很多种方式,在这里我简单的介绍几种方式
(1)使用Handler + Runnable的方式
代码如下:
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
//你要做的事
//……
System.out.println(Thread.currentThread().getName());
handler.postDelayed(runnable, 1000);
}
};
然后调用handler.post(runnable);就能启动定时器,这里是每隔1s打印线程名字,从打印中我们可以知道,他并没有另开线程,而
是运行在UI线程当中,当你要取消定时器的时候,只需要调用handler.removeCallbacks(runnable)就可以了。
上面中有一个问题,有时候你会发现removeCallbacks有时候会失效,不能从消息队列中移除,看下面的demo
图:两个按钮,一个将Runnable加到消息队列中,一个将Runnable从消息队列中移除。该Runnable每1秒钟打印一次日志。
代码如下:
<SPAN style=”FONT-FAMILY: Courier New”>package com.example.demoactivity;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class TimerActivity extends Activity{
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println(“update…”);
handler.postDelayed(runnable, 1000);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timer);
Button mButtonStart = (Button) findViewById(R.id.button1);
Button mButtonStop = (Button) findViewById(R.id.button2);
mButtonStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
handler.post(runnable);
}
});
mButtonStop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
handler.removeCallbacks(runnable);
}
});
}
}</SPAN><SPAN style=”FONT-FAMILY: Georgia, ‘Times new roman’, Times, san-serif”>
</SPAN>
weixin_38717870
- 粉丝: 2
- 资源: 908
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0