需求:在界面上有兩個按鈕,一個開始,一個停止。點擊開始按鈕,更新應用的標題為當前時間。按停止按鈕停止更新時間。
考察:handler的使用。
這里借助Handler+Timer+TimerTask來實現
package com.zhy.ui;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import com.zhy.shortcut.R;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class UpdateUiActivity extends Activity implements OnClickListener{
private static final int UPDATA_TITIE=1;
Button start;
Button stop;
TimerTask task;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui);
start=(Button) findViewById(R.id.start);
stop=(Button) findViewById(R.id.stop);
//實列化Handler
handler=new Handler(){
//處理消息
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//標記消息
switch (msg.what) {
case UPDATA_TITIE:
//更新UI
updateTitle(msg);
break;
default:
break;
}
}
};
start.setOnClickListener(this);
stop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
//創建一個定時器
Timer timer=new Timer();
//創建TimerTask
task=new TimerTask() {
//實現run方法,這里存放需要實時更新時間的代碼
@Override
public void run() {
//創建一個消息體
Message message=new Message();
//標記消息
message.what=UPDATA_TITIE;
//傳遞數據
message.obj=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date());
//發送消息
handler.sendMessage(message);
}
};
//調度,每隔一秒中執行一次
timer.schedule(task, 1, 1000);
break;
case R.id.stop:
//停止
if(task!=null){
task.cancel();
}
break;
default:
break;
}
}
/**
* 更新應用標題
* @param msg
*/
private void updateTitle(Message msg) {
UpdateUiActivity.this.setTitle(String.valueOf(msg.obj));
}
}