亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

異步任務--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

寻甸| 天水市| 怀远县| 滦平县| 开封市| 鹤山市| 萨嘎县| 平阳县| 安泽县| 岑巩县| 清丰县| 西乌| 梅河口市| 原平市| 苍南县| 宜兰市| 方正县| 乌拉特后旗| 宝兴县| 鄯善县| 永和县| 东光县| 体育| 永吉县| 莱州市| 济南市| 惠来县| 北流市| 郓城县| 彭泽县| 东乌珠穆沁旗| 项城市| 方城县| 双江| 吉隆县| 新化县| 营口市| 东乡族自治县| 翁牛特旗| 师宗县| 阿拉善左旗|