http://www.cnblogs.com/shangdahao/archive/2013/05/19/3069092.html
Android 在其他線程中更新UI 線程
方法一:Activity.runOnUiThread(Runnable )
(經驗之道: 這個最好用, 凡是要重新整理頁面的地方,
Activity.runOnUiThread( new Runnable()
{ public void run(){更新UI}}
);
方法二:子線程調用Handler的sendMessage(message)發送事件。
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 )
public void onClick( View v ) { new Thread( new Runnable() { public void run() { // 耗時操作 loadNetWork(); myText.( new Runnable() { myText.setText( 來自網路的資訊); }); } }).start(); }
方法四:AsyncTask
//UI線程中執行 new DownloadImageTask().execute( "www.91dota.com" ); private class DownloadImageTask extends AsyncTask { protected String doInBackground( String... url ) { return loadDataFormNetwork( url[0] );//後台耗時操作 } protected void onPostExecute( String result ) { myText.setText( result ); //得到來自網路的資訊重新整理頁面 } }