现在的位置: 首页 > 综合 > 正文

Android Timer TimerTask Handler 小案例

2013年10月24日 ⁄ 综合 ⁄ 共 2618字 ⁄ 字号 评论关闭

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>

抱歉!评论已关闭.