码迷,mamicode.com
首页 > 移动开发 > 详细

android_handler简单使用,测试

时间:2015-09-14 19:41:08      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:handler

package yjm.com.testcontrol;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class TestActivity extends Activity implements View.OnClickListener{
    TextView tv1;
    TextView tv2;
    Button btn1;
    Button btn2;

    //创建 UI线程更新数据,主要是UI 控件 不支持异步线程更新,必须所有的值都在UI线程值才能修改
     Handler myHandler = new Handler(){
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what){
                 case R.id.tv1:
                     tv1.setText(""+msg.arg1+"");
                     break;
                 case R.id.tv2:
                     tv2.setText(""+msg.arg2+"");
             }

             super.handleMessage(msg);
         }
     };

     class TheadTest extends Thread{
         Handler myHandler;
         Message msg;
         public TheadTest(Handler handler){
              this.myHandler=handler;
         }

        @Override
        public void run(){

            for (int i = 0; i <100 ; i++) {
                try {
                    sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //此message 对象必须是新new的。如果重复发送同一个,就会卡住报错。
                msg= new Message();
                msg.what=R.id.tv1;
                msg.arg1=i;
                myHandler.sendMessage(msg);
            }
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_test);/**/

        tv1=(TextView)findViewById(R.id.tv1);
        tv2=(TextView)findViewById(R.id.tv2);
        btn1=(Button)findViewById(R.id.btn1);
        btn2=(Button)findViewById(R.id.btn2);
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if(view.getId()==R.id.btn1){
            tv1.setText("btn1_test..开始.");
            new TheadTest(myHandler).start();
        }
        //UI线程内部进行UI数据量更新测试 按钮2进行测试
        if(view.getId()==R.id.btn2){
            for (int i = 0; i <10000 ; i++) {
                tv2.setText("btn2_test...:"+i);
            }
        }

    }
}


tv1 在主线程 1-99显示

tv1 异步更新值,通过handler显示值

android_handler简单使用,测试

标签:handler

原文地址:http://yjm199.blog.51cto.com/4408395/1694631

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!