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 ); //得到来自网络的信息刷新页面 

 } 

 

 

 

 

 

 

 

你可能感兴趣的:(android)