android服务的原理,Android学习笔记:IntentService
一般我們所使用的Service是運行在主線程當中的,所以在Service里面編寫耗時的操作代碼,會造成主線程卡頓會ANR。為了解決這樣的問題,谷歌引入了IntentService。
如果有一個任務,可以分成很多個子任務,需要按照順序來完成,如果需要放到一個服務(Service)中完成,那么使用IntentService是最好的選擇。
一、IntentService的優點
(1)它創建一個獨立的工作線程來一個一個處理所有Intent。
(2)創建了一個工作隊列,來逐個發送Intent給onHandleIntent()
(3)不需要主動調用stopSelf()來結束服務,因為源碼里面自己實現了自動關閉。
(4)默認實現了onBind()返回的null。
(5)默認實現了onStartCommand()方法,目的是將intent插入到工作隊列。
總結:(使用IntentService的好處)首先,省去了手動開線程的麻煩;第二,不用手動停止Service;第三,由于設計了工作隊列,可以啟動多次startService(),但是只有一個Service實例和一個工作線程。按順序一個一個執行。
二、IntentService原理及作用
1、原理
IntentService是繼承Service的一個抽象類,它在onCreate()方法中創建了一個HandlerThread,并啟動該線程。HandlerThread是帶有自己消息隊列和Looper的線程,根據HandlerThread的looper創建一個Handler,這樣IntentService的ServiceHandler的HandleMessage()方法就運行在子線程中。HandleMessage中調用了onHandleIntent()方法,它是一個抽象方法,繼承IntentService類需要實現該方法,把耗時操作放在onHandleIntent()方法中,等耗時操作運行完成后,會調用stopSelf()方法,服務會調用onDestory()方法消毀自己。如果onHandleIntent()方法中的耗時操作未運行完前就調用了stopSelf()方法,服務調用onDestory()方法,但耗時操作會繼續運行,直至運行完畢。如果同時多次啟動IntentService,任務會放在一個隊列中,onCreate()和onDestory()方法都只會運行一次。
2、作用
用來處理后臺耗時操作,如讀取數據庫或是本地文件等。
總結
以上是生活随笔為你收集整理的android服务的原理,Android学习笔记:IntentService的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌io大会 android p,谷歌I
- 下一篇: android电视盒子解码很慢,电视盒子