android多線程與多進(jìn)程
一.Android進(jìn)程的分類:
(1)前臺(tái)進(jìn)程:即與用戶正在交互的Activity或者Activity用到的Service等,如果系統(tǒng)內(nèi)存不足時(shí)前臺(tái)進(jìn)程是最后被殺死的;
(2)可見(jiàn)進(jìn)程:可以是處于暫停狀態(tài)(onPause)的Activity或者綁定在其上的Service,即被用戶可見(jiàn),但由于失去了焦點(diǎn)而不能與用戶交互;
(3)服務(wù)進(jìn)程:其中運(yùn)行著使用startService方法啟動(dòng)的Service,雖然不被用戶可見(jiàn),但是卻是用戶關(guān)系的,例如用戶正在非音樂(lè)界面聽(tīng)的音樂(lè)或者正在非下載頁(yè)面自己下載的文件等;當(dāng)系統(tǒng)要用空間運(yùn)行前兩者進(jìn)程時(shí)才會(huì)被終止;
(4)后臺(tái)進(jìn)程:其中運(yùn)行著執(zhí)行onStop方法而停止的程序,但是卻不是用戶當(dāng)前關(guān)心的,例如后臺(tái)掛著的QQ,這樣的進(jìn)程系統(tǒng)一旦沒(méi)有內(nèi)存就首先被殺死;
(5)空進(jìn)程:不包含任何應(yīng)用程序的程序組件的進(jìn)程,這樣的進(jìn)程系統(tǒng)是一般不會(huì)讓他存在的;
二.進(jìn)程與多線程的深入
1.由于單線程而導(dǎo)致的ANR錯(cuò)誤:
ANR錯(cuò)誤(Application Not Responding),指主UI進(jìn)程被阻塞超過(guò)5秒鐘而出現(xiàn)的錯(cuò)誤,它會(huì)終止程序的正常運(yùn)行,我們要避免它 ,而產(chǎn)生ANR錯(cuò)誤的原因就是:?jiǎn)尉€程。
2.Android線程之間的通信——Handler
其實(shí),Android線程之間的通信不只是Handler,還需要Message,MessageQueue,Looper的相互使用,Android線程通信模型如下:

(1)Message:即要傳遞的消息;
(2)MessageQueue:存放消息的隊(duì)列;
(3)Looper:用于創(chuàng)建MessageQueue以及循環(huán)使用其中的Message;
(4)Handler:用于消息的傳遞了;