Android提供了4种在其他线程中访问UI线程的方法

android的UI页面是不允许在其他线程直接操作的。下面总结4中方法用来在线程中操作UI界面。

      方法一:Handler

       子线程调用Handler的sendMessage(message)发送事件。

 

View Code
mHandler = new Handler() { 
 @Override 
 public void handleMessage(Message msg) { 
 //操作界面 
 myText.setText( 来自网络的信息); 
 super.handleMessage(msg); 
 } 
}; 
-----------------------------
-----------------------------
public class MyThread extends Thread { 
 public void run() { 
 // 耗时操作 
 loadNetWork(); 
 Message msg = new Message(); 
 mHandler.sendMessage(msg);//向Handler发送消息, 
 } 
}

方法二:View.post(Runnable )

View Code
public void onClick( View v ) { 
 new Thread( new Runnable() { 
 public void run() { 
 // 耗时操作 
 loadNetWork(); 
 myText.( new Runnable() { 
 myText.setText( 来自网络的信息); 
 }); 
 } 
 }).start(); 
} 

方法三:Activity.runOnUiThread(Runnable )

View Code
public void onClick( View v ) { 
 new Thread( new Runnable() { 
 public void run() { 
 // 耗时操作 
 loadNetWork(); 
 Activity.runOnUiThread.( new Runnable() { 
 myText.setText( 来自网络的信息); 
 }); 
 } 
 }).start(); 
}

 方法四:AsyncTask

View Code
//UI线程中执行
new DownloadImageTask().execute( "www.91dota.com" ); 
 private class LoadTask extends AsyncTask { 
 protected String doInBackground( String... url ) { 
 return loadDataFormNetwork( url[0] );//后台耗时操作 
 } 
 protected void onPostExecute( String result ) { 
 myText.setText( result ); //得到来自网络的信息刷新页面 
 } 

 

 

 

 

 

 

 

posted on 2013-05-08 16:53  大米稀饭  阅读(465)  评论(0编辑  收藏  举报