更新UI的四种方式

来源:互联网 发布:辛格尔软件 编辑:程序博客网 时间:2024/05/22 22:07

布局文件中只有一个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; * } * */@Overridepublic 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() {@Overridepublic void run() {// TODO Auto-generated method stubtextView.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() {@Overridepublic void run() {// TODO Auto-generated method stubtextView.setText("ok");}});}@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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 blocke.printStackTrace();}};}.start();}}
代码中大段的注释代码均为方法的源代码:以便读者更好的理解.其实方法的本质还是sendMessage方法.

0 0