2015.01.15(android AsyncTask)

來源:互聯網
上載者:User

標籤:

參考網址:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html

 1 /* 2  *     Params 啟動任務執行的輸入參數,比如HTTP請求的URL。 3  *  Progress 背景工作執行的百分比。 4  *  Result 後台執行任務最終返回的結果,比如String 5  *   6  *  doInBackground(Params…) :後台執行,比較耗時的操作都可以放在這裡。注意這裡不能直接操作UI。 7  *                              此方法在後台線程執行,完成任務的主要工作,通常需要較長的時間。 8  *                              在執行過程中可以調用publicProgress(Progress…)來更新任務的進度。 9  *  onPostExecute(Result)      :相當於Handler 處理UI的方式,在這裡面可以使用在doInBackground 得到的結果處理操作UI。 10  *                              此方法在主線程執行,任務執行的結果作為此方法的參數返回11  *  12  *  有必要的話你還得重寫以下這三個方法,但不是必須的:13  *      onProgressUpdate(Progress…)       可以使用進度條增加使用者體驗度。 此方法在主線程執行,用於顯示任務執行的進度。14  *      onPreExecute()                    這裡是終端使用者調用Excute時的介面,當任務執行之前開始調用此方法,可以在這裡顯示進度對話方塊。15  *      onCancelled()                     使用者調用取消時,要做的操作16  */17     public class MyAsyncTask extends AsyncTask<String, Integer, List<Product>>18     {19         @Override20         protected void onPreExecute()21         {22             Toast.makeText(getApplicationContext(), "開始載入", Toast.LENGTH_SHORT).show();23             super.onPreExecute();24         }25 26         // * 後台運行耗時操作,不能直接操作主UI線程裡面的資料,通過函數publishProgress和onProgressUpdate間接操作主UI線程裡面的資料27         @Override28         protected List<Product> doInBackground(String... params)29         {30             // 擷取產品列表,不能操作主UI線程內的資料31             List<Product> temProducts = new GetProductService().getProduct(page);32 //            for( Integer i = 0; i < 3; ++i )33 //            {34 //                publishProgress(i);        // 通過調用該函數通知 onProgressUpdate並且在onProgressUpdate中可以修改UI主線程中的參數35 //            }36             return temProducts;37         }38 39         // * 子線程中調用publishProgress函數通知此函數操作主UI線程中的資料(主要是進度條資料)40         @Override41         protected void onProgressUpdate(Integer... values)42         {43             int vlaue = values[0];     // 擷取主線程中調用 publisProgress 傳遞過來的進度值44             Toast.makeText(getApplicationContext(), "載入進度:" + vlaue, Toast.LENGTH_LONG).show();45             super.onProgressUpdate(values);46         }47         48 //           相當於Handler 處理UI的方式,在這裡面可以使用在doInBackground 得到的結果處理操作UI。此方法在主線程執行,任務執行的結果作為此方法的參數返回49 //        這裡的product參數對應AsyncTask中的第三個參數(也就是接收doInBackground的傳回值)  50 //           在doInBackground方法執行結束之後在運行,並且運行在UI線程當中 可以對UI空間進行設定 51         @Override52         protected void onPostExecute(List<Product> product)53         {54             Toast.makeText(getApplicationContext(), "載入完畢", Toast.LENGTH_LONG).show();55             ListUtil.products = products;        // 擷取產品列表對象56             isLoading = false;                    // 設定載入標誌狀態位:載入完畢57             58             adapter.setProducts(product);59             adapter.notifyDataSetChanged();60             if( product.size() == 0 )61             {62                 Toast.makeText(getApplicationContext(), "已經載入完畢", Toast.LENGTH_LONG).show();63                 productListView.removeFooterView(footView);64                 isLoading = true;65             }66         }67         68         @Override69         protected void onCancelled(List<Product> result)70         {71             super.onCancelled(result);72         }73     }

 

2015.01.15(android AsyncTask)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.