标签: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显示值
标签:handler
原文地址:http://yjm199.blog.51cto.com/4408395/1694631