//在主线程创建Handler,实现UI的更新,以下是一个例子
public class MainActivity extends Activity {
private TextView text_show;
// 在主线程中创建消息Handler
// 主线程创建方式
Handler handler = new Handler() {
// 要重写里面的方法
public void handleMessage(android.os.Message msg) {
// 跟新UI,设置textview
if (msg.what == 1) {
text_show.setText((String) msg.obj);
}
};
};// 注意这里要分号
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text_show = (TextView) this.findViewById(R.id.text_show);
}
public void sendMessage(View view) {
// 耗时工作在子线程,然后向主线程传递数据
new Thread(new Runnable() {
@Override
public void run() {
// Message对象可以通过new出来,但不建议,通常使用 Message.obtain() 或
// Handler.obtainMessage() 方法来从消息池中获得空消息对象,以节省资源;
Message message = Message.obtain();
message.what = 1;
message.obj = "这是子线程,请接收";
// 封装完数据发送给主线程
handler.sendMessage(message);
}
}).start();
}
}
//在子线程运用的例子
public class SecondActivity extends Activity {
private TextView text_show;
// 在子线程中创建消息Handler
// 子线程创建方式
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text_show = (TextView) this.findViewById(R.id.text_show);
new Mythread().start();
}
public void sendMessage(View view) {
Message message = Message.obtain();
message.what = 1;
message.obj = "这是主线程在发送,请接收";
// 封装完数据发送给子线程
handler.sendMessage(message);
}
// Handler在子线程张处理消息
class Mythread extends Thread {
@Override
public void run() {
// 1.创建looper
Looper.prepare();
handler = new Handler() {
// 要重写里面的方法
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
Log.i("MainActivity", (String) msg.obj);
break;
}
}
};// 注意这里要分号
// 3.循环读取MessageQueue
Looper.loop();
}
}
}
转载于:https://my.oschina.net/u/2541146/blog/625266