标签: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