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

來源:互聯網
上載者:User

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();}}}

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


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.