android Handler 实现Demo

写了一个简单的Handler测试类。留作以后参考

package com.zhangxl.mydemo.activity;

import com.zhangxl.mydemo.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;
import android.widget.ProgressBar;

/**
 * handler测试demo
 * 
 * @author zhangxl
 * 
 */
public class HandlerActivity extends Activity {

    private Button startBt;
    private Button endBt;
    private ProgressBar testBar;
    private Handler handler;
    private Runnable handlerThread;
    int number;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.handler_test);
        // 给按钮添加监听事件
        startBt = (Button) findViewById(R.id.start);
        startBt.setOnClickListener(new HandlerListener());

        endBt = (Button) findViewById(R.id.end);
        endBt.setOnClickListener(new HandlerListener());
        
        testBar=(ProgressBar)findViewById(R.id.progressBar1);
        // 创建handler对象
        handler = new HandlerTest();
        handlerThread = new handlerThread();
    }

    /**
     * <按钮监听事件内部类> <功能详细描述>
     * 
     * @author zhangxl
     * @version [版本号, 2014-5-4]
     * @see [相关类/方法]
     * @since [产品/模块版本]
     */
    public class HandlerListener implements OnClickListener {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            int id = v.getId();
            switch (id) {
            // 开始
            case R.id.start:
                System.out.println("开始");
                handler.post(handlerThread);
                break;
            // 结束
            case R.id.end:
                handler.removeCallbacks(handlerThread);
                number=0;
                testBar.setProgress(0);
                break;

            default:
                break;
            }
        }
    }

    /**
     * <线程循环输出内部类> <功能详细描述>
     * 
     * @author zhangxl
     * @version [版本号, 2014-5-4]
     * @see [相关类/方法]
     * @since [产品/模块版本]
     */
    public class handlerThread implements Runnable {

        public void run() {
            // TODO Auto-generated method stub
            try {
                Thread.sleep(1000);
                number++;
                 //得到一个消息对象,Message类是android系统提供的  
                Message msg = handler.obtainMessage();  
                msg.arg1=number*10;
                System.out.println(number);
                handler.sendMessage(msg);
                
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

    /**
    * <继承Handler 重写handleMessage 方法实现类> 
    * <功能详细描述> 
    * 
    * @author  zhangxl 
    * @version  [版本号, 2014-5-4] 
    * @see  [相关类/方法] 
    * @since  [产品/模块版本]
     */
    public class HandlerTest extends Handler{
        
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub 
            super.handleMessage(msg);
            testBar.setProgress(msg.arg1);
            handler.post(handlerThread);
        }
    }
}

posted on 2014-05-04 17:28  张家大宝  阅读(201)  评论(0)    收藏  举报

导航