Hello Android - AsyncTask異步操作

AsyncTask能夠適當地、簡單地用於 UI線程。這個類准許執行後臺操作,讓那些沒有熟練操作線程的操作者在 UI線程上發佈結果。

異步任務的定義是一個在後臺線程上運行,其結果是在 UI線程上發表的計算。、

異步任務被定義成三種一般類型: Params Progress Result;

四步: begin , doInBackground , processProgress和end.

自己寫的練習

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log;
public class MainActivity extends Activity{
 protected void onCreate(Bundle savedInstanceState) {
    super .onCreate(savedInstanceState); 
    setContentView(R.layout.main);  
    //AsyncTask.execute()要在主線程裏調用 ,新建了一堆線程,寫這麼多是爲了便於查看效果
    new AsyncLoader().execute("aaaa");
    new AsyncLoader().execute("bbbb");
    new AsyncLoader().execute("cccc");
    new AsyncLoader().execute("dddd");
    new AsyncLoader().execute("eeee");
    new AsyncLoader().execute("ffff");
  }
}

  //AsyncTask 
  class AsyncLoader extends AsyncTask<String, Integer, Integer>{


	@Override
	protected Integer doInBackground(String... arg0) {
		
		Log.i("AsyncLoader", "doInBackground:"+arg0[0]);
		for (int i = 0; i < 2; i++) {
			publishProgress(i);//發送更新進度消息
			try { 
			      Thread.sleep(1000); 
			    } catch (InterruptedException e) { 
			      e.printStackTrace(); 
			    } 
		}
		return 0;
	}


	@Override
	protected void onCancelled() {
		Log.i("AsyncLoader", "onCancelled");
		super.onCancelled();
	}


	@Override
	protected void onPostExecute(Integer result) {
		Log.i("AsyncLoader", "onPostExecute:result="+result);
		super.onPostExecute(result);
	}


	@Override
	protected void onProgressUpdate(Integer... values) {
		//打印進度
		Log.i("AsyncLoader", "progress:"+ values[0]);
		super.onProgressUpdate(values);
	} 
  } 
}



在網上找到一篇博客:http://lichen.blog.51cto.com/697816/486868,寫的不錯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章