首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

小结4种线程中操作UI界面的方法

2012-06-28 
总结4种线程中操作UI界面的方法我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据。但是当数据取

总结4种线程中操作UI界面的方法

我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据。但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的。下面总结4中方法用来在线程中操作UI界面。

方法一:Handler

子线程调用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();}


方法三:Activity.runOnUiThread(Runnable )

与view.post类似

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


方法四:AsyncTask

?

 //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文章: 5进制空间

?

热点排行