關於Android的Service知識點,你知道嗎?
目錄
學習Service相關知識點:
- 概述;
- Service生命週期;
- Service的基本用法;
- 服務。
-
問:達叔,今日工作累嗎?
-
答:累啊,那麼問你,你知道Android中的
Service(服務)嗎?~ -
問:哥,這麼幹的嗎?
-
答:呵呵,是的,~
概述:
在Android中Service是一個在後臺執行長時間執行操作,而不需要和使用者互動的應用程式元件。主要是用來後臺處理網路事務,播放音樂,執行檔案操作和content provider進行互動等。
- 答:簡要地說,Service的執行不依賴任何使用者介面,是一直保持在後臺執行的。
如果當某個應用程式被關閉時,所有依賴於該應用的服務也就會停止了~ - 問:哦~
對於,Service服務的分兩種類:
一:Started Service,二:Bound Service。(英文理解:開啟服務,繫結服務)。這兩種服務各有各的特色。不過在理解之前,先看看它們的生命週期情況(圖片來源於官方):
可以看出兩種啟動方式區別:
Call to startService -> onCreate() -> onStartCommand() -> Service running -> onDestroy()
Call to bindService() -> onCreate() -> onBind() -> onUnbind() -> onDestroy()
從中可以看出:
一:使用startService()方法啟動服務,呼叫onStartCommand()方法啟動Service,啟動Service的元件與Service沒有聯絡,所以關閉元件,後臺的Service也在執行中。
二:使用bindService()方法繫結來啟動服務,呼叫onBind()方法來啟動,將啟動Service的元件和Service繫結在一起,關閉元件則Service會停止。
- 問:那有什麼要注意的嗎?
- 答:其實這兩種方法並不衝突,使用startService()啟動Service後,可以再使用bindService()方法進行繫結
到時,你在呼叫stopService()或自身stopSelf()方法和unBindService()方法就行,注重建立與銷燬,才能更好理解~
Service的基本用法:
建立一個Service類,重寫 onCreate(),onStartCommand(),oonDestroy(),這三種通常使用的方法。
定義一個MyService的類,程式碼如下:
補充說明:
Service(服務)預設是執行主執行緒,不是預設執行在子執行緒,和程序中。如果要進行耗時操作,那麼就要在開啟子執行緒操作和使用非同步訊息處理機制。
不然會出現主執行緒被(ANR)的情況,ANR為應用無反應。
在建立Service時,系統會自動在配置檔案對MyService進行註冊:
可利用Intent可以啟動和停止Service:
-
問:對於Service內容可以回顧一下嗎?
-
答:額,一:對於Started Service,當一個元件呼叫startService()方法請求服務時,系統會呼叫它的生命週期方法,啟動後,會在後臺無限期執行下去,直到完成工作呼叫stopSelf()或stopService()方法來終止服務的~
-
問:嗯,好的~
-
答:額,二:對於Bound Service的啟動,當其它元件呼叫bindService()進行繫結服務時,系統會呼叫它的生命週期方法,,其中有客戶端繫結到Service,那麼客戶端通過IBinder介面與服務進行通訊,客戶端通過unbindService()方法進行斷開連線,呼叫onUnbind()方法解繫結,系統呼叫onDestroy()方法來銷燬~
對於掌握Service(服務)知識點。
Service用於後臺執行使用者指定的操作。
學習不是速成,內容理解,多練多用多查多看即可。
喜歡本文的朋友們
歡迎關注,點贊
收看更多精彩內容