Android中Service概述
Service是Android中一種很重要的元件,一般來說有兩種用途:用Service執行長期執行的操作,並且與使用者沒有UI介面的互動;某個應用程式的Service可以被其他應用程式的元件呼叫以便提供更廣泛的使用。要想使得自己寫的Service能夠正常執行,必須在AndroidManifest.xml中通過標籤註冊Service,類似於通過標籤註冊Activity一樣。有兩種方式使用Service,一種是通過Context類的startService方法啟動Service,另一種是通過Context類的bindService方法啟動Service。
需要注意的是,與其他的應用程式元件一樣,Service預設情況下是執行在其所在宿主程式的主執行緒中的。也就是說如果我們在Service要做一些CPU密集型操作(比如播放MP3)或阻塞式操作(比如網路請求),那麼主執行緒就會卡死,出現ARN(Application Not Responding)程式無響應現象,為了解決這種問題,我們應該在Service中建立一個新執行緒,然後將這些耗時操作放入到該新建立的執行緒中去執行,這樣不會阻塞主執行緒。
為了搞明白Service是什麼,我們首先要知道Service不是什麼:
a. 首先Service不是另一個獨立的程式。 Service不會自己開闢一個新的程式,除非特別指定,預設情況下Service是執行在應用程式所屬的程式中。
b. Service不是另一個新執行緒。Service的操作都是在主執行緒中執行的,為了避免阻塞主執行緒,在Service中應該將耗時操作放入到一個新執行緒中執行。
通過上面的描述我們知道,Service其實很簡單(沒有開創新的程式和新的執行緒),Service提供了以下兩個主要的特性:
a. 作為應用程式的一部分執行在後臺,並且甚至不需要和使用者進行互動。這種情況下,我們一般呼叫Context的startService方法(比如在Activity中呼叫startSerivce方法)啟動service。
b. 作為某個應用程式的元件暴露出去,使得其他的應用程式可以呼叫該Service。這種情況下,我們一般呼叫Context的bindService方法,比如我們有兩個應用App1和App2,在App1中我們有一個Service叫做App1Service,在App2中我們有一個Acitivity叫做App2Activity,即便App1沒有啟動,我們在App2的App2Activity中也可以通過呼叫bindService啟動App1中的App1Service,並且通過呼叫bindService之後,在Service和呼叫者之間會建立連線進行程式間互動。
後續會寫文章分別介紹startService與bindService的使用示例以及生命週期。
相關博文:
Android中startService的使用及Service生命週期
Android通過startService播放背景音樂簡單示例
Android通過startService實現批量下載示例
Android中IntentService的使用及其原始碼解析
Android中bindService的使用及Service生命週期
Android中通過Messenger與Service實現程式間雙向通訊
相關文章
- Android中的Web ServiceAndroidWeb
- Android中Service總結Android
- Windows Embedded for Point of Service概述Windows
- Android中Intent概述及使用AndroidIntent
- Android中Service的一個Demo例子Android
- Android ServiceAndroid
- Android Service 服務(一)—— ServiceAndroid
- Android概述Android
- Android中Service的啟動方式及Activity與Service的通訊方式Android
- Android Service SecurityAndroid
- Android Intent ServiceAndroidIntent
- Android之ServiceAndroid
- Android中bindService的使用及Service生命週期Android
- Android中startService的使用及Service生命週期Android
- Android Service完全解析Android
- 淺談 Android ServiceAndroid
- Android:Service詳解Android
- android service詳解Android
- Android 中 Service+Notification 斷點續傳下載Android斷點
- Android逆向分析概述Android
- Android佈局概述Android
- Android UI教程:概述AndroidUI
- Android總結篇系列:Android ServiceAndroid
- Android Service詳解(二)Android
- Android Service詳解(一)Android
- Android 之Service使用攻略Android
- Android-Service詳解Android
- Android Service 訪問安全Android
- Android Jackson 概述Android
- Android之Service設定android:process作用Android
- Android Service最全面的解析Android
- android懸浮框(service形式)Android
- android Fragments詳解一:概述AndroidFragment
- Android Service重啟恢復(Service程式重啟)原理解析Android
- Android Service生命週期 Service裡面的onStartCommand()方法詳解Android
- Android Service生命週期淺析Android
- Android Service的啟動過程Android
- Android Service入門到崩潰Android