欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

Android培訓之核心UI線程—離開返回的無縫銜接?

2016-03-02 13:30:43 1179瀏覽

        作為Android開發(fā)者,我們都知道保持uI響應靈敏的重要性.因此開發(fā)者把類似I/0操作這樣的耗時任務放在后臺線程中執(zhí)行:當后臺線程執(zhí)行完畢后,經(jīng)常需要更新UI:Android可能與讀者熟知的其他uI系統(tǒng)非常相似,并不是線程安全的:在修改任何ImageView之前,必須返回到應用程序主線程中,試圖在主線程之外修改uI會導致異常。

        Android培訓之核心UI線程—離開返回的無縫銜接

        初始實現(xiàn)代碼使用的是AsyncTask的onPostExecute()方法:因為我們使用Executor代替AsyncTask,因此需要為宿主Activity準備一個Runnable對象:我們會用到Activity的runonu汀hread()方法,該方法會使用Handler在后臺將我們的工作添加到u1的消息隊列中:

        切換到uI線程是需要考慮的二讀者必須注意下述幾個方面:

        口如果用戶滾動ListView,ImageView的實例有可能被回收

        口宿主Activity有可能在任務完成前已經(jīng)被銷毀

        因此,用于處理圖片的Runnable的每一步都需要檢查是否應該停止處理圖片二如果宿主Activity使用ImageWorker的setExit,TasksEarly(1方法設置一個標記(flag),就可以檢查到停止狀態(tài).該方法需要在onPause()方法中調用。此外,如果FutureTask的cancel()方法被調用,也可以檢查到停止狀態(tài)。

        注意事項

        對于產(chǎn)品級應用程序,Android官方文檔的training小節(jié)建議使用更好的磁盤緩存解決方案。原始文檔提供的實現(xiàn)方案缺少幾個關鍵部分,為此,這里提供一個更完整的例子,修改磁盤緩存的實現(xiàn)代碼,使其支持在應用程序重啟時可以重建磁盤緩存,并且不再需要維護這部分代碼的兩份拷貝。

        加載圖片等耗時T作需要在uI線程之外執(zhí)行.這會使類似ListView這樣的內置組件平滑運行。讀者可以使用一個LIFO隊列對加載圖片的順序進行微調,以此獲得更好的用戶體驗。

        使用一個可能會生成無數(shù)實例的AsyncTask會導致潛在問題。使用executor可以更好地完成AsyncTask的工作。此外,Android開發(fā)在支持庫中提供了一個穩(wěn)定的LruCache實現(xiàn),用于提供高效緩存解決方案。

 查看更多關于“Android培訓資訊”的相關文章>>

標簽:

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部