Android[中級教程]第十一章 Android異步之AsyncTask

Android裏有一個自帶的異步類,裏面封裝了異步的操作方法,主要有三個操作方法


1.doInBackground   這是後臺運行的程序,就是新建了一個線程在後臺所要運行的內容,例如(網絡獲取圖片)

2.onProgressUpdate 是前臺界面的更新,後臺的操作要反映到前臺,就需要在這裏面做處理,例如(刷新前臺的圖片)

3.onPostExecute  這個就是線程結束後做的處理


在這裏面將異步分成三個步驟,好了,不多說了,讓我們看一下今天運行的程序,程序將每隔一秒鐘加入一項內容,見圖


好,接下來,我們來分析一下代碼的實現:

public class AsynDemo extends Activity {

	private String[] items = { "第一項", "第二項", "第三項", "第四項", "第五項", "第六項", "第七項",
			"第八項", "第九項", "第十項" };
	
	private ListView listView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

		setContentView(R.layout.asyn_layout);

		listView = (ListView) findViewById(R.id.list);

		//設定listView的適配器
		listView.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, new ArrayList()));

		//運行異步程序
		new AddStringTask().execute();
	}

	/**
	 * 異步類,繼承了AsyncTask
	 *
	 */
	class AddStringTask extends AsyncTask<Void, String, Void> {

		//後臺運行的程序
		@Override
		protected Void doInBackground(Void... arg0) {

			//遍歷items數組,將每個String發給前臺
			for (String s : items) {

				publishProgress(s);
				SystemClock.sleep(1000);

			}

			return null;
		}

		//前臺操作,將數據加入到到Adapter
		@Override
		protected void onProgressUpdate(String... values) {

			((ArrayAdapter) listView.getAdapter()).add(values[0]);
		}

		//結束
		@Override
		protected void onPostExecute(Void result) {
			Toast.makeText(AsynDemo.this, "結束", 1).show();
		}

	}

}
其實就這麼點代碼,具體步驟就是這樣,相信大家都能看懂。


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