1. 程式人生 > >關於Android的Service知識點,你知道嗎?

關於Android的Service知識點,你知道嗎?

目錄

學習Service相關知識點:

  1. 概述;
  2. Service生命週期;
  3. Service的基本用法;
  4. 服務。
  • 問:達叔,今日工作累嗎?

  • 答:累啊,那麼問你,你知道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用於後臺執行使用者指定的操作。
學習不是速成,內容理解,多練多用多查多看即可。

喜歡本文的朋友們
歡迎關注,點贊
收看更多精彩內容