基礎(chǔ)篇2:Service

目錄
一、作用
二、生命周期
三、啟動方式
四、啟動方式
五、IntentService

Service簡介

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

注意

  1. 長期運行的后臺任務(wù) — Service是Android中實現(xiàn)程序后臺運行的解決方案,它非常適用于去執(zhí)行那些不需要和用戶交互而且還要求長期運行的任務(wù)。
  2. 執(zhí)行在UI線程中 — Service默認并不會運行在子線程中,它也不運行在一個獨立的進程中,它同樣執(zhí)行在UI線程中,因此,不要在Service中執(zhí)行耗時的操作,除非你在Service中創(chuàng)建了子線程來完成耗時操作。

一、作用

二、生命周期

onCreate
onstartCommand
onBind
onunbind
ondestroy

三、啟動方式

  • startservice — startservice 一旦被開啟 與調(diào)用者 就沒有關(guān)系了。這個服務(wù) 會長期的在后臺運行。
  • bindservice — bindservice 是 將調(diào)用者 與 服務(wù)綁定,如果開啟這個服務(wù)的 activity 被銷毀,那么這個服務(wù)也相應(yīng)的要掛掉

四、

五、IntentService

IntentService簡介

IntentService是繼承于Service并處理異步請求的一個類,在IntentService內(nèi)有一個工作線程來處理耗時操作,啟動IntentService的方式和啟動傳統(tǒng)Service一樣,同時,當任務(wù)執(zhí)行完后,IntentService會自動停止,而不需要我們?nèi)ナ謩涌刂?。另外,可以啟動IntentService多次,而每一個耗時操作會以工作隊列的方式在IntentService的onHandleIntent回調(diào)方法中執(zhí)行,并且,每次只會執(zhí)行一個工作線程,執(zhí)行完第一個再執(zhí)行第二個,以此類推。

Service本身存在兩個問題

  1. Service不會專門啟動一條單獨的進程,Service與它所在應(yīng)用位于同一個進程中。
  2. Service也不是專門一條新線程,因此不應(yīng)該在Service中直接處理耗時的任務(wù)。
IntentService特征
  • 會創(chuàng)建獨立的worker線程來處理所有的Intent請求。
  • 會創(chuàng)建獨立的worker線程來處理onHandleIntent()方法實現(xiàn)的代碼,無需處理多線程問題。
  • 所有請求處理完成后,IntentService會自動停止,無需調(diào)用stopSelf()方法停止Service。
  • 為Service的onBind()提供默認實現(xiàn),返回null。
  • 為Service的onStartCommand提供默認實現(xiàn),將請求Intent添加到隊列中。
  • 所有請求都在一個單線程中,不會阻塞應(yīng)用程序的主線程(UI Thread),同一時間只處理一個請求。
  • 不可以直接和UI做交互。為了把它執(zhí)行的結(jié)果體現(xiàn)在UI上,需要把結(jié)果返回給Activity。
  • 工作任務(wù)隊列是順序執(zhí)行的,如果一個任務(wù)正在IntentService中執(zhí)行,此時你再發(fā)送一個新的任務(wù)請求,這個新的任務(wù)會一直等待直到前面一個任務(wù)執(zhí)行完畢才開始執(zhí)行。
  • 正在執(zhí)行的任務(wù)無法打斷。
使用IntentService的好處
  • 省去了在Service中手動開線程的麻煩。
  • 當操作完成時,不用手動停止Service。
使用步驟

繼承IntentService類,并重寫onHandleIntent()方法即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,048評論 25 709
  • 1.什么是Activity?問的不太多,說點有深度的 四大組件之一,一般的,一個用戶交互界面對應(yīng)一個activit...
    JoonyLee閱讀 5,858評論 2 51
  • 面試題總結(jié) 通用 安卓學(xué)習途徑, 尋找資料學(xué)習的博客網(wǎng)站 AndroidStudio使用, 插件使用 安卓和蘋果的...
    JingBeibei閱讀 1,873評論 2 21
  • 從 iOS6--->iOS9,及至即將的發(fā)布 iOS10(iOS X?)的,功能越發(fā)完善,和Android也愈發(fā)互...
    小林記閱讀 569評論 0 51
  • 現(xiàn)在時間是 7:30 計劃 8:30 之前的單詞 搞定 ;聽力 和新聞 隨意看看 9點多開始 正式學(xué)習了
    淮鎮(zhèn)閱讀 167評論 0 0

友情鏈接更多精彩內(nèi)容