IntentService簡介

IntentService簡介

  IntentService是Service類的子類,用來處理異步請求。客戶端可以通過startService(Intent)方法傳遞請求給IntentService。
  IntentService在onCreate()函數中通過HandlerThread單獨開啓一個線程來處理所有Intent請求對象(通過startService的方式發送過來的)所對應的任務,這樣以免事務處理阻塞主線程。執行完所一個Intent請求對象所對應的工作之後,如果沒有新的Intent請求達到,則自動停止Service;否則執行下一個Intent請求所對應的任務。
  IntentService在處理事務時,還是採用的Handler方式,創建一個名叫ServiceHandler的內部Handler,並把它直接綁定到HandlerThread所對應的子線程。 ServiceHandler把處理一個intent所對應的事務都封裝到叫做onHandleIntent的虛函數;因此我們直接實現虛函數onHandleIntent,再在裏面根據Intent的不同進行不同的事務處理就可以了。
另外,IntentService默認實現了Onbind()方法,返回值爲null。

使用IntentService需要兩個步驟:

  1. 寫構造函數
  2. 實現虛函數onHandleIntent,並在裏面根據Intent的不同進行不同的事務處理就可以了。
  

好處:
    處理異步請求的時候可以減少寫代碼的工作量,比較輕鬆地實現項目的需求
注意:
    IntentService的構造函數一定是參數爲空的構造函數,然後再在其中調用super("name")這種形式的構造函數。

  因爲Service的實例化是系統來完成的,而且系統是用參數爲空的構造函數來實例化Service的關於Handler和Service的更多知識請閱讀《Looper和Handler》,《關於Handler技術》,《Service簡介》,《AIDL和Service實現兩進程通信》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章