Android學習之四大元件(二)——service

紫霧凌寒發表於2015-10-15
版權宣告:本文為博主原創文章,轉載請註明出處http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/49160021

Android 學習之四大元件(二)——service

1、什麼是Service

Service沒有使用者介面,執行在後臺。負責處理一些使用者看不到的、並且有持續時間的事情。有時候我們退出應用,Service並沒有結束,它仍在後臺執行,一般在播放音樂,下載資料等情況下會用到Service。

2、service的種類 

service按照不同的方式有不同的分類。
按執行地點:本地服務(Local)、遠端服務(Remote)。
按執行型別:前臺服務、後臺服務。
按使用方式:startService啟用的服務、BindService啟用的服務、兩者同時啟用的服務。

3、service與Tread的區別

(1) Thread:Thread (執行緒)是程式執行的最小單元,它是分配CPU的基本單位。可以用 Thread 來執行一些非同步的操作。

(2)Service:Service 是android的一種機制,當它執行的時候如果是Local Service,那麼對應的
Service 是執行在主程式的 main 執行緒上的。如:onCreate,onStart 這些函式在被系統呼叫的時候都是在主程式的 main 執行緒上執行的。如果是Remote Service,那麼對應的
Service 則是執行在獨立程式的 main 執行緒上。因此請不要把 Service 理解成執行緒,它跟執行緒半毛錢的關係都沒有!

舉個例子:如果你的 Thread 需要不停地隔一段時間就要連線伺服器做某種同步的話,該 Thread 需要在
Activity 沒有sta
rt的時候也在執行。這個時候當你 start 一個 Activity 就沒有辦法在該
Activity 裡面控制之前建立的 Th
read。因此你便需要建立並啟動一個 Service ,在 Service
裡面建立、執行並控制該 Th
read,這樣便解決了該問題(因為任何 Activity 都可以控制同一 Service,而系統也只會建立一個對應
Se
rvice 的例項)。

4、在 AndroidManifest.xml 裡 Service 元素的常見選項

android:name  ————-  服務類名

android:label  ————–  服務的名字,如果此項不設定,那麼預設顯示的服務名則為類名

android:icon  ————–  服務的圖示

android:permission  ——-  申明此服務的許可權,這意味著只有提供了該許可權的應用才能控制或連線此服務

android:process  ———-  表示該服務是否執行在另外一個程式,如果設定了此項,那麼將會在包名後面加上這段字串表示另一程式的名字

android:enabled  ———-  如果此項設定為 true,那麼 Service
將會預設被系統啟動,不設定預設此項為 false

android:exported  ———  表示該服務是否能夠被其他應用程式所控制或連線,不設定預設此項為 false



相關文章