最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AsyncTask官方文檔教程整理

 更新時(shí)間:2017年04月03日 14:54:21   作者:SAKA  
這篇文章主要跟大家分享了關(guān)于AsyncTask官方文檔的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。

簡(jiǎn)介

Android給我們提供了一種輕量級(jí)的異步任務(wù)類AsyncTask。該類中實(shí)現(xiàn)異步操作,并提供接口反饋當(dāng)前異步執(zhí)行結(jié)果及進(jìn)度,這些接口中有直接運(yùn)行在主線程中的(如 onPostExecute,onPreExecute等)。

AsyncTask可以輕松正確的使用UI線程,這個(gè)類允許你在后臺(tái)操作,并且不需要使用threads或者h(yuǎn)andler將結(jié)果發(fā)布到UI線程。

AsyncTask設(shè)計(jì)之初就是輔助Thread和Handler的,并且不會(huì)生成線程。AsyncTask應(yīng)該被用于短時(shí)間內(nèi)的操作(最多幾秒鐘),如果你想要長(zhǎng)時(shí)間保持線程運(yùn)行,請(qǐng)使用Executor或者ThreadPoolExecutor或者FutureTask。

AsyncTask在后臺(tái)運(yùn)行任務(wù),在UI線程發(fā)布結(jié)果,定義三個(gè)參數(shù),Params, Progress和Result,執(zhí)行四個(gè)步驟,onPreExecute, doInBackground, onProgressUpdate和onPostExecute。

使用方法

AsyncTask必須被繼承來使用。子類必須實(shí)現(xiàn)至少一個(gè)方法(ddoInBackground(Params…)) ,還有一個(gè)最常用的方法(onPostExecute(Result)

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
 protected Long doInBackground(URL... urls) {
  int count = urls.length;
  long totalSize = 0;
  for (int i = 0; i < count; i++) {
   totalSize += Downloader.downloadFile(urls[i]);
   publishProgress((int) ((i / (float) count) * 100));
   // Escape early if cancel() is called
   if (isCancelled()) break;
  }
  return totalSize;
 }
 protected void onProgressUpdate(Integer... progress) {
  setProgressPercent(progress[0]);
 }
 protected void onPostExecute(Long result) {
  showDialog("Downloaded " + result + " bytes");
 }
}

啟動(dòng)異步任務(wù):

new DownloadFilesTask().execute(url1, url2, url3);

AsyncTasks的范型參數(shù)

異步任務(wù)使用的參數(shù)是:

  • Params, 啟動(dòng)任務(wù)時(shí)傳入的參數(shù)
  • Progress, 在后臺(tái)任務(wù)執(zhí)行時(shí)發(fā)布到UI線程的進(jìn)度類型
  • Result, 后臺(tái)任務(wù)執(zhí)行完成的結(jié)果

這三個(gè)參數(shù)不一定非要指定,可以使用Void來傳入空值。

private class MyTask extends AsyncTask<Void, Void, Void> { ... }

4個(gè)步驟

  • onPreExecute() ,在應(yīng)用程序執(zhí)行前在UI線程上調(diào)用。這步通常被用來準(zhǔn)備任務(wù)開始,例如顯示一個(gè)進(jìn)度條。
  • doInBackground(Params…) ,在onPreExecute()方法被調(diào)用后立即執(zhí)行此方法,用來執(zhí)行長(zhǎng)時(shí)間的任務(wù)。
  • 參數(shù)會(huì)在這一步傳入,最后的結(jié)果必須返回。在這步頁可以使用publishProgress(Progress...)來發(fā)布進(jìn)度,這些值時(shí)在UI線程中發(fā)布的,在onProgressUpdate(Progress...)接收。onProgressUpdate(Progress…) , 在publishProgress(Progress...)方法調(diào)用后在UI線程調(diào)用此方法。執(zhí)行時(shí)間未定義。該方法用于在后臺(tái)計(jì)算仍在執(zhí)行時(shí),用戶界面中顯示的進(jìn)度。例如,它可以用于對(duì)進(jìn)度條進(jìn)行動(dòng)畫處理或在文本字段中顯示日志。
  • onPostExecute(Result) ,在后臺(tái)計(jì)算完成后在UI線程上調(diào)用。 后臺(tái)計(jì)算的結(jié)果作為參數(shù)傳遞給該步驟。

取消異步任務(wù)

任何時(shí)候都可以通過調(diào)用cancel(boolean)方法來取消任務(wù)。

調(diào)用此方法將導(dǎo)致對(duì)isCancelled()的后續(xù)調(diào)用返回true。

調(diào)用此方法后,onCancelled(Object) ,而不調(diào)用onPostExecute(Object)

為了盡可能快地取消任務(wù),應(yīng)該始終從doInBackground(Object [])中定期檢查isCancelled()的返回值(如果可能的話)。

線程規(guī)則

  • 必須在UI線程上加載AsyncTask類。
  • 必須在UI線程上創(chuàng)建任務(wù)實(shí)例。
  • 必須在UI線程上調(diào)用execute(Params …)
  • 不要手動(dòng)調(diào)用onPreExecute() ,onPostExecute(Result) ,doInBackground(Params …)onProgressUpdate(Progress …) 。
  • 該任務(wù)只能執(zhí)行一次(如果嘗試第二次執(zhí)行,將拋出異常)。

內(nèi)存監(jiān)控

AsyncTask保證所有回調(diào)調(diào)用都是同步的,使得以下操作在沒有顯式同步的情況下是安全的。

  • 在構(gòu)造函數(shù)或onPreExecute()中設(shè)置成員字段,并在doInBackground(Params …)中引用它們。
  • doInBackground(Params …)中設(shè)置成員字段,并在onProgressUpdate(Progress …)onPostExecute(Result)中引用它們。

執(zhí)行順序

首次引入時(shí),AsyncTasks在單個(gè)后臺(tái)線程上串行執(zhí)行。

從DONUT開始,這被更改為一個(gè)允許多個(gè)任務(wù)并行操作的線程池。

從HONEYCOMB開始,任務(wù)在單個(gè)線程上執(zhí)行,以避免并行執(zhí)行引起的常見應(yīng)用程序錯(cuò)誤。

如果真的需要并行執(zhí)行,則可以使用THREAD_POOL_EXECUTOR調(diào)用executeOnExecutor(java.util.concurrent.Executor,Object [])

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Android使用OkHttp上傳圖片的實(shí)例代碼

    Android使用OkHttp上傳圖片的實(shí)例代碼

    本篇文章主要介紹了Android使用OkHttp上傳圖片的實(shí)例代碼,這里整理了相關(guān)的代碼,有興趣的可以了解一下
    2017-07-07
  • Android沉浸式狀態(tài)欄設(shè)計(jì)的實(shí)例代碼

    Android沉浸式狀態(tài)欄設(shè)計(jì)的實(shí)例代碼

    本篇文章主要介紹了Android沉浸式狀態(tài)欄設(shè)計(jì)的實(shí)例代碼,整理了詳細(xì)的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android實(shí)現(xiàn)頂部弧形背景效果

    Android實(shí)現(xiàn)頂部弧形背景效果

    在當(dāng)今移動(dòng)互聯(lián)網(wǎng)應(yīng)用中,界面設(shè)計(jì)的美觀與交互體驗(yàn)往往成為用戶評(píng)價(jià)一款產(chǎn)品的重要因素之一,本文將詳細(xì)介紹如何在 Android 應(yīng)用中實(shí)現(xiàn)頂部弧形背景效果,通過自定義 View、繪制原理和動(dòng)畫特效等多種技術(shù)手段,打造出既美觀又具有較好擴(kuò)展性的界面背景效果
    2025-04-04
  • Android實(shí)現(xiàn)手機(jī)多點(diǎn)觸摸畫圓

    Android實(shí)現(xiàn)手機(jī)多點(diǎn)觸摸畫圓

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)手機(jī)多點(diǎn)觸摸畫圓,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Android 自定義布局豎向的ViewPager的實(shí)現(xiàn)

    Android 自定義布局豎向的ViewPager的實(shí)現(xiàn)

    這篇文章主要介紹了Android 自定義布局豎向的ViewPager的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 基于Android本地代碼生成器詳解

    基于Android本地代碼生成器詳解

    本篇文章是對(duì)Android本地代碼生成器的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Android RecyclerView實(shí)現(xiàn)下拉刷新和上拉加載

    Android RecyclerView實(shí)現(xiàn)下拉刷新和上拉加載

    這篇文章主要介紹了Android RecyclerView實(shí)現(xiàn)下拉刷新和上拉加載的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android打造流暢九宮格抽獎(jiǎng)活動(dòng)效果

    Android打造流暢九宮格抽獎(jiǎng)活動(dòng)效果

    抽獎(jiǎng)活動(dòng)有很多種形式,轉(zhuǎn)盤抽獎(jiǎng),九宮格抽獎(jiǎng),刮刮卡抽獎(jiǎng),這篇文章主要為大家詳細(xì)介紹了如何打造流暢九宮格抽獎(jiǎng)活動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android?Recyclerview實(shí)現(xiàn)左滑刪除功能

    Android?Recyclerview實(shí)現(xiàn)左滑刪除功能

    這篇文章主要為大家詳細(xì)介紹了Android?Recyclerview實(shí)現(xiàn)左滑刪除功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android 下載網(wǎng)絡(luò)圖片并顯示到本地

    Android 下載網(wǎng)絡(luò)圖片并顯示到本地

    本文主要介紹了Android實(shí)現(xiàn)下載網(wǎng)絡(luò)圖片并顯示到本地功能的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-03-03

最新評(píng)論

涪陵区| 翼城县| 东平县| 北流市| 洪雅县| 荔波县| 黔西县| 钦州市| 景德镇市| 石首市| 崇阳县| 临泉县| 扬州市| 江城| 美姑县| 汉源县| 蚌埠市| 阿合奇县| 湖州市| 荃湾区| 聂荣县| 年辖:市辖区| 烟台市| 托克托县| 白朗县| 休宁县| 元江| 桓台县| 新平| 仙桃市| 彩票| 德令哈市| 商丘市| 读书| 淮滨县| 密云县| 洱源县| 平原县| 阆中市| 清涧县| 吉木乃县|