java代碼:
timer timer = new timer( );
timertask task = new timertask( ) {
public void run ( ) {
message message = new message( );
message.what = 1;
handler.sendmessage(message);
}
};
final handler handler = new handler( ) {
public void handlemessage(message msg) {
switch (msg.what) {
case 1:
log.e("timer","timer");
update( );
break;
super.handlemessage(msg);
protected void ondestroy ( ) {
if (timer != null) {
timer.cancel( );
timer = null;
super.ondestroy( );
protected void oncreate (bundle savedinstancestate) {
super.oncreate(savedinstancestate);
this.setcontentview(r.layout.main);
timer.schedule(task,1000,5000);
最重要的一點是 timer.schedule(task,1000,5000),如果設定為 timer.schedule(task,5000)是不會工作的。
因為timer.schedule(task,5000) 是表示執行一次的任務。
timer.schedule(task,1000,5000)表示 1 秒鐘後開始 5 秒鐘為周期 重複執行,
更好的方法是通過下面的代碼 (handler加runnable線程,更簡潔)
java代碼:
private handler handler = new handler( );
private runnable runnable = new runnable( ) {
handler.postdelayed(this,1000);
//postdelayed(this,1000)方法安排一個runnable對象到主線程隊列中
handler.postdelayed(runnable,1000); // 開始timer
handler.removecallbacks(runnable); //停止timer