使用Timer+TimerTask + Handler的方法:
典型实现:
step1:在onCreate方法中,创建Timer对象及TimerTask对象:
timer = new Timer();//创建timer对象
timer.schedule(new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = 0;
message.obj = "aaaa";
mHandler.sendMessage(message);
}
}, 4000, 10 * 1000);//4000表示开始时4秒后发送一次,10*10000表示美10秒后发送一次
2,Handler用来处理超时任务发送出来的消息,做一些界面更新等操作
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
String str = (String) msg.obj;
//设置UI
//text.setText(str);
} else {
//text.setText("ccccc");
}
super.handleMessage(msg);
}
};
3,在OnDestroy中需要定时器
protected void onDestroy() {
super.onDestroy();
if (timer != null)
{
timer.cancel();//关闭timer
}
}
1,源码示例
https://blog.csdn.net/sinat_33381791/article/details/82827667
https://blog.csdn.net/dj0379/article/details/50877746
2,注意点:
(1),TimerTask运行在一个单独的线程里,而不是UI线程。所以使用Android timer时,注意android的单线程原则,确保线程安全。不要在TimerTask的run方法中做UI相关的操作,如:TextView.setText()等,这样可能会导致UI线程阻塞。如果需要可以使用handler向UI线程发消息,具体处理由UI线程自己完成。在使用完Timer之后,要使用Timer的cancel方法取消Timer,否则Timer一直在运行。
(2),这里需要注意的是,timer的cancel方法只能执行一次,不能在调用了cancel之后再进行timer的任务执行。