Android裡有一個內建的非同步類,裡面封裝了非同步操作方法,主要有三個操作方法
1.doInBackground 這是後台啟動並執行程式,就是建立了一個線程在後台所要啟動並執行內容,例如(網路擷取圖片)
2.onProgressUpdate 是前台介面的更新,背景操作要反映到前台,就需要在這裡面做處理,例如(重新整理前台的圖片)
3.onPostExecute 這個就是線程結束後做的處理
在這裡面將非同步分成三個步驟,好了,不多說了,讓我們看一下今天啟動並執行程式,程式將每隔一秒鐘加入一項內容,見圖
好,接下來,我們來分析一下代碼的實現:
public class AsynDemo extends Activity {private String[] items = { "第一項", "第二項", "第三項", "第四項", "第五項", "第六項", "第七項","第八項", "第九項", "第十項" };private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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> {//後台啟動並執行程式@Overrideprotected Void doInBackground(Void... arg0) {//遍曆items數組,將每個String發給前台for (String s : items) {publishProgress(s);SystemClock.sleep(1000);}return null;}//前台操作,將資料加入到到Adapter@Overrideprotected void onProgressUpdate(String... values) {((ArrayAdapter) listView.getAdapter()).add(values[0]);}//結束@Overrideprotected void onPostExecute(Void result) {Toast.makeText(AsynDemo.this, "結束", 1).show();}}}
其實就這麼點代碼,具體步驟就是這樣,相信大家都能看懂。