AndTestTimerActivity.java
import java.util.Timer;
import java.util.TimerTask;
import android.util.Log;
import android.view.View;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.widget.Button;
import android.widget.TextView;
/**
*演示timer , TimerTask 结合 Handler 更新UI
* @author cooper
*/
public class AndTestTimerActivity extends Activity {
private Timer timer;
private Button startBtn;
private TextView timerView;
private final String tag = "cooper";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
timerView = (TextView) findViewById(R.id.timerTextView);
startBtn = (Button) findViewById(R.id.startTimerButton);
Log.i(tag, "main-->"+Thread.currentThread().getName());
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//task delay period
// TimerTask 是个抽象类,实现的是Runable类
timer = new Timer();
timer.schedule( new TimerTask() {
int i = 10;
@Override
public void run() {
Log.i(tag, "timerTask-->"+Thread.currentThread().getName());
Message msg = new Message();
msg.what = i--;
handler.sendMessage(msg);
}
} , 1000, 200);
}
});
}
// 定义Handler handler in main-thread
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what > 0) {
timerView.setText("" + msg.what);
} else {
timerView.setText("fire!!!");
timer.cancel();
}
}
};
}
======================================================================
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/timerTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"
android:text="power start"
></TextView>
<Button
android:id="@+id/startTimerButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"
android:text="start Countdown"
></Button>
</LinearLayout>