布局文件中只有一个TextView所以在此处不再给出.
下面给出java代码:
package com.example.handler_test2;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class Five extends Activity {
private TextView textView;
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
textView.setText("ok");
};
};
private void handler1(){
// post方法执行runnable中的代码
handler.post(new Runnable() {
/*
* public final boolean post(Runnable r){
* return sendMessageDelayed(getPostMessage(r),0);
* }
* private static Message getPostMessage(Runnable){
* Message m= Message.obtain();
* m.callback = r;
* return m;
* }
* */
@Override
public void run() {
textView.setText("ok");
}
});
}
//
private void handler2(){
handler.sendEmptyMessage(1);
}
private void updateUI(){
/*public final void runOnUiThread(Runnable action){
if(Thread.currentThread()! = mUiThread){
mHandler.post(action);
}else{
action.run();
}
}*/
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
textView.setText("ok");
}
});
}
private void viewUI(){
/*public boolean post(Runnable action){
final AttachInfo attachInfo = mAttachInfo;
if(attachInfo ! = null){
return attachInfo.mHandler.post(action);
}
ViewRootInpl.getRunQueue().post(action);
return true;
}*/
textView.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
textView.setText("ok");
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.five);
textView = (TextView) findViewById(R.id.textView);
new Thread() {
public void run() {
try {
Thread.sleep(2000);
// handler1();
// handler2();
// updateUI();
viewUI();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
代码中大段的注释代码均为方法的源代码:以便读者更好的理解.其实方法的本质还是sendMessage方法.