android 異步加載

最近接觸到一些數據量大的處理頁面,那麼不可避免的就要用到異步加載的方法。

總結了下:

1、最主流的是Handle + Thread方式;

2、使用AsyncTask

3、Activity.runOnUiThread(Runnable)
      View.post(Runnable)
      View.postDelayed(Runnable, long)

4、使用AsyncQueryHandler

分別給出示例:

①Handle + Thread方式

    private Handler mHandler = new Handler();
    public class MyThread extends Thread {
         Message msg = new Message();   
         mHandler.sendMessage(msg);
   }

②AsyncTask

   就是如果oncreate的時候 數據量就很大 而你恰恰也沒有想要分頁的打算 可以用這個了

    new LoadData().execute();
    private class LoadData extends AsyncTask<Object, Object, Object>{
        protected Object doInBackground(Object... params){
	    return null;  //查詢數據
         }
        protected void onPostExecute( String result ) {   
            myText.setText( result );  //刷新頁面    
         }  
    }

③View.post(Runnable)

    比如向撥號盤搜索聯繫人的功能,就可以在監聽EditText變化的時候用到。

     private Handler searchListHandler = new Handler();
    public void afterTextChanged(Editable s){
        searchListHandler.post(runnable);
    }
    private Runnable runnable = new Runnable(){
        public void run(){}
    };

  Activity.runOnUiThread(Runnable)和View.post(Runnable)是類似的

    public void onClick( View v ) {
        new Thread( new Runnable() {
           public void run() {
​    ​         ​ loadNetWork();
​              Activity.runOnUiThread(new Runnable() {
                  myText.setText("Farmer is a good man!");
              });
           }
        }).start();
    }

  View.postDelayed(Runnable, long) 傳遞給postDelayed方法中的Runnable對象在指定的時間後執行,並且是在此
   Handler所關聯的線程中執行。

    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        mHander.postDelayed(new MyThread(), 1000); 
    } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章