01
Timer timer = new Timer( );
02
03
TimerTask task = new TimerTask( ) {
04
public void run ( ) {
05
Message message = new Message( );
06
message.what = 1;
07
handler.sendMessage(message);
08
}
09
};
10
11
final Handler handler = new Handler( ) {
12
public void handleMessage(Message msg) {
13
switch (msg.what) {
14
case 1:
15
log.e("Timer","Timer");
16
update( );
17
break;
18
}
19
20
super.handleMessage(msg);
21
}
22
};
23
24
protected void onDestroy ( ) {
25
if (timer != null) {
26
timer.cancel( );
27
timer = null;
28
}
29
super.onDestroy( );
30
}
31
protected void onCreate (Bundle savedInstanceState) {
32
super.onCreate(savedInstanceState);
33
this.setContentView(R.layout.main);
34
timer.schedule(task,1000,5000);
35
}
最重要的一点是 timer.schedule(task,1000,5000),如果设置为 timer.schedule(task,5000)是不会工作的。
因为timer.schedule(task,5000) 是表示执行一次的任务。
timer.schedule(task,1000,5000)表示 1 秒钟后开始 5 秒钟为周期 重复执行,
更好的方法是通过下面的代码 (Handler加Runnable线程,更简洁)
01
private Handler handler = new Handler( );
02
03
private Runnable runnable = new Runnable( ) {
04
public void run ( ) {
05
update( );
06
07
handler.postDelayed(this,1000);
08
//postDelayed(this,1000)方法安排一个Runnable对象到主线程队列中
09
}
10
};
11
12
handler.postDelayed(runnable,1000); // 开始Timer
13
handler.removeCallbacks(runnable); //停止Timer