Android基礎篇2:Service

目錄
1、做用
2、生命週期
3、啓動方式
4、啓動方式
5、IntentService

Service簡介

Service是Android程序中四大基礎組件之一,它和Activity同樣都是Context的子類,只不過它沒有UI界面,是在後臺運行的組件。多線程

注意
  1. 長期運行的後臺任務 — Service是Android中實現程序後臺運行的解決方案,它很是適用於去執行那些不須要和用戶交互並且還要求長期運行的任務。
  2. 執行在UI線程中 — Service默認並不會運行在子線程中,它也不運行在一個獨立的進程中,它一樣執行在UI線程中,所以,不要在Service中執行耗時的操做,除非你在Service中建立了子線程來完成耗時操做。

1、做用

2、生命週期

onCreate
onstartCommand
onBind
onunbind
ondestroy異步

3、啓動方式

  • startservice — startservice 一旦被開啓 與調用者 就沒有關係了。這個服務 會長期的在後臺運行。
  • bindservice — bindservice 是 將調用者 與 服務綁定,若是開啓這個服務的 activity 被銷燬,那麼這個服務也相應的要掛掉

4、

5、IntentService

IntentService簡介

IntentService是繼承於Service並處理異步請求的一個類,在IntentService內有一個工做線程來處理耗時操做,啓動IntentService的方式和啓動傳統Service同樣,同時,當任務執行完後,IntentService會自動中止,而不須要咱們去手動控制。另外,能夠啓動IntentService屢次,而每個耗時操做會以工做隊列的方式在IntentService的onHandleIntent回調方法中執行,而且,每次只會執行一個工做線程,執行完第一個再執行第二個,以此類推。線程

Service自己存在兩個問題繼承

  1. Service不會專門啓動一條單獨的進程,Service與它所在應用位於同一個進程中。
  2. Service也不是專門一條新線程,所以不該該在Service中直接處理耗時的任務。
IntentService特徵
  • 會建立獨立的worker線程來處理全部的Intent請求。
  • 會建立獨立的worker線程來處理onHandleIntent()方法實現的代碼,無需處理多線程問題。
  • 全部請求處理完成後,IntentService會自動中止,無需調用stopSelf()方法中止Service。
  • 爲Service的onBind()提供默認實現,返回null。
  • 爲Service的onStartCommand提供默認實現,將請求Intent添加到隊列中。
  • 全部請求都在一個單線程中,不會阻塞應用程序的主線程(UI Thread),同一時間只處理一個請求。
  • 不能夠直接和UI作交互。爲了把它執行的結果體如今UI上,須要把結果返回給Activity。
  • 工做任務隊列是順序執行的,若是一個任務正在IntentService中執行,此時你再發送一個新的任務請求,這個新的任務會一直等待直到前面一個任務執行完畢纔開始執行。
  • 正在執行的任務沒法打斷。
使用IntentService的好處
  • 省去了在Service中手動開線程的麻煩。
  • 當操做完成時,不用手動中止Service。
使用步驟

繼承IntentService類,並重寫onHandleIntent()方法便可。生命週期

相關文章
相關標籤/搜索