為什么需要異步處理技術(shù)
Android應(yīng)用的開發(fā)要求我們正確處理主線程與子線程之間的關(guān)系,耗時(shí)操作應(yīng)當(dāng)放到子線程中以故,避免阻塞主線程逮栅,導(dǎo)致ANR跨释。異步處理技術(shù)是提高應(yīng)用性能解決主線程和子線程之間通訊問題的關(guān)鍵照筑。
Android中的線程分類
Android應(yīng)用中各種類型的線程本質(zhì)上都基于Linux系統(tǒng)的pthreads吹截,在應(yīng)用層可以分為三種類型的線程。
- 主線程:也成為UI線程凝危,隨著應(yīng)用的啟動(dòng)而啟動(dòng)波俄,主要用來運(yùn)行Android組件和更新UI。
- Binder線程:用于跨進(jìn)程通訊的蛾默,每個(gè)進(jìn)程都維護(hù)了一個(gè)線程池懦铺,用來處理其他進(jìn)程中線程發(fā)送的消息,這些進(jìn)程包括系統(tǒng)服務(wù)趴生、Intents阀趴、ContentProviders和Service等昏翰。一個(gè)典型的應(yīng)用場(chǎng)景是應(yīng)用提供一個(gè)給其他進(jìn)程通過AIDL接口綁定的Service苍匆。
- 后臺(tái)線程:應(yīng)用中顯示創(chuàng)建的線程都是后臺(tái)線程,后臺(tái)線程主要用來進(jìn)行數(shù)據(jù)的處理網(wǎng)絡(luò)請(qǐng)求等棚菊,在Android框架中浸踩,通過WindowManager賦予了主線程只能處理UI更新以及后臺(tái)線程不能直接操作UI的限制。