最近作一個項目用到Handler 和Message ,開始時不是很明白,不瞭解其中的內部機制,因此開發起來有點難度,以後本身找了Android 時間服務 這一節的內容,總結了一點關於時間的知識,在這裏大概寫一下,也給更多有須要的童鞋參考參考:java
1. 這裏首先來的是定時器Chronometer ,這是一個組件,在可視化視圖中能夠直接拖拽過去,而後本身設置相關的屬性,我平時直接邊界XML佈局文件實現,我的感受這樣思路不會混亂。定時器比較簡單,沒有不少複雜的方法,你們只要記住重要的3個方法:start(); stop(); setBase(); 前兩個方法沒有參數,是啓動和中止計時器的方法,後面的是重置計時器的,能夠有參數,參數是從那個時間開始計時。先來看看效果圖:android
步驟:app
1】 佈局採用線性佈局,本身砌上去就好了。很少說ide
2】onChronometerTick事件方法是計時器每秒回調的方法,咱們能夠用它來更新UI,看下面的代碼:佈局
package com.android.android_chronometer;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener,
OnChronometerTickListener {
private Button btnStart, btnStop, btnReset;
private TextView textViewCurrentTime;
// 定時器,一個能夠本身設定開始時間的定時器
private Chronometer chronometer;
private SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (Button) this.findViewById(R.id.buttonBegin);
btnStop = (Button) this.findViewById(R.id.buttonStop);
btnReset = (Button) this.findViewById(R.id.buttonReset);
textViewCurrentTime = (TextView) this
.findViewById(R.id.textViewCurrentTime);
chronometer = (Chronometer) this.findViewById(R.id.chronometer1);
btnStart.setOnClickListener(this);
btnStop.setOnClickListener(this);
btnReset.setOnClickListener(this);
chronometer.setOnChronometerTickListener(this);
// 設定顯示的計時格式
chronometer.setFormat("計時器:%s");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.buttonBegin:
// 計時器啓動
chronometer.start();
break;
case R.id.buttonStop:
// 計時器中止
chronometer.stop();
break;
default:
// 以當前時刻從新計時
chronometer.setBase(SystemClock.elapsedRealtime());
break;
}
}
/** 定時器沒秒回調的方法,這樣能夠在UI界面上更新數據 */
@Override
public void onChronometerTick(Chronometer chronometer) {
// TODO Auto-generated method stub
textViewCurrentTime.setText("當前時間:" + formatter.format(new Date()));
}
} this
3】Handler 和Message 在後面的筆記中記錄。spa