Android Service 與 IntentService

來源:互聯網
上載者:User

標籤:

IntentService:非同步處理服務,新開一個線程:handlerThread線上程中發訊息,然後接受處理完成後,會清理線程,並且關掉服務。

IntentService有以下特點:

(1)  它建立了一個獨立的背景工作執行緒來處理所有的通過onStartCommand()傳遞給服務的intents。

(2)  建立了一個工作隊列,來逐個發送intent給onHandleIntent()。

  每一個請求都會在一個單獨的worker thread中處理,不會阻塞應用程式的主線程

(3)  不需要主動調用stopSelft()來結束服務。因為,在所有的intent被處理完後,系統會自動關閉服務。

(4)  預設實現的onBind()返回null

(5)  預設實現的onStartCommand()的目的是將intent插入到工作隊列中

 繼承IntentService的類至少要實現兩個函數:建構函式和onHandleIntent()函數。要覆蓋IntentService的其它函數時,注意要通過super調用父類的對應的函數。

onHandleIntent()方法:

IntentService在執行onCreate的方法的時候,其實開了一個線程HandlerThread,並獲得了當前線程隊列管理的looper,並且在onStart的時候,把訊息置入了訊息佇列

在訊息被handler接受並且回調的時候,執行了onHandlerIntent方法,該方法的實現是子類去做的。

IntentService是通過Handler looper message的方式實現了一個多線程的操作,同時耗時操作也可以被這個線程管理和執行,同時不會產生ANR的情況。

Android Service 與 IntentService

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.