使用安卓应用时我们的UI并不是一成不变的,我们需要它可以更新内容。但是在Android中并不允许在子线程中进行UI操作,这时Android提供了一套异步消息处理机制,完美地解决了在子线程中进行UI操作问题。
MainActivity代码:
public class MainActivity extends Activity implements OnClickListener {
private static final int UPDATE_TEXT = 1;
private Button changeText;
private TextView text;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_TEXT:
//在这里可以进行UI操作
text.setText("Nice to meet you");
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
text = (TextView) findViewById(R.id.text);
changeText = (Button) findViewById(R.id.change_text);
changeText.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.change_text:
new Thread(new Runnable() {
@Override
public void run() {
Message message=new Message();
message.what=UPDATE_TEXT;
handler.sendMessage(message);//将Message对象发送出去
}
}).start();
break;
default:
break;
}
}
}
界面:
界面代码:
这是一个简单的线程的基本用法,效果是让TextView中的Hello World变为Nice to meet you
这里实例化一个Handler对象handler,赋值"Nice to meet you",开线程实例化Message对象message,handler调用sendMessage方法判断message携带的what值将TextView内容替换为"Nice to meet you"
共同学习,写下你的评论
评论加载中...
作者其他优质文章