91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

異步任務--AsyncTask

發布時間:2020-06-29 09:25:24 來源:網絡 閱讀:316 作者:許大蟲 欄目:移動開發

    當UI(主)線程運行時間過長時,系統會出現ANR(Application No Response),為了避免這種情況,就需要將耗時操作設在非主線程中進行,這樣也能保證Android的單線程模型。

    Android提供了一個封裝好的控件--AsyncTask,來完成這些操作,其能在子線程中更新UI,能封裝,簡化異步操作

    AsyncTask<Params,Progress,Result>是一個抽象類,通常用于被繼承,繼承時需要指定以下三個泛型參數:

    1.Params:啟動任務時輸入的參數類型

    2.后臺任務執行中返回進度值的類型

    3.后臺執行任務完成后返回結構的類型

    構建AsyncTask子類有以下回調方法

異步任務--AsyncTask

    因為此例子為簡單舉例,所以AsyncTask的三個參數不需要返回值,所以設為Void

    要啟動AsyncTask還需要在主函數中調用.execute();方法

例如:異步任務--AsyncTask


    要使用AsyncTask,還需要在主函數中,定義一個先前創建好的AsyncTask的子類方法,例如上文的MyAsyncTask

    舉例如下:

異步任務--AsyncTask

異步任務--AsyncTask    

    這舉例是訪問網絡上一張圖片,把耗時的訪問加載圖片等操作放在AsyncTask中,因為訪問了網絡,不要忘了在AndroidManifest中添加訪問網絡的Permission

注意:由于一個線程沒有結束,下一個線程是沒法進行的,是需要等上一個進程完成后才能進行的,所以當想進行下一個線程時,可以采取AsyncTask.cancel(true)的方法結束當前線程,然后再執行的步驟中,判斷如果isCancelled(),就不要再繼續執行任務,直接break,然后再去進行下一個線程

    每個AsyncTask只能調用一次,多次調用會拋出異常

    AsyncTask的四個方法中,只有doInBackground()是運行在其它線程,其它三個是運行在主線程,所以doInBackground()不能直接更新UI,需要通過onPostExecute()或onProgressUpdate()方法更新UI

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桦川县| 惠东县| 黄浦区| 高要市| 临夏市| 潜山县| 微山县| 炉霍县| 武陟县| 枣庄市| 眉山市| 鹤峰县| 台南市| 莱阳市| 二手房| 林西县| 泗洪县| 景泰县| 佛冈县| 天门市| 沙河市| 沂源县| 定日县| 青河县| 阿合奇县| 潜江市| 淮滨县| 齐齐哈尔市| 临夏市| 交城县| 云南省| 民乐县| 泸溪县| 吉隆县| 虎林市| 定襄县| 普陀区| 平谷区| 湄潭县| 密山市| 定襄县|