掌握Service概念
掌握Service分類
Service開發能力具有
瞭解Service和intentService類的區別android
重點難點
StartService和BoundService區別
Service的開發,啓動和綁定
掌握Service和線程的使用區別數據庫
考覈目標
什麼是Service?
請描述一下Service的生命週期?
說一下Android裏有哪兩種Service?
Service會新開進程或者線程麼?
startedService和BoundService區別編程
練習
使用Service來寫一個音樂播放器,要求分別使用startService和bindService方法服務器
服務是一個應用程序組件,可以在後臺執行一個長時間運行的程序,不提供用戶交互接口,即有些用時比較長的操做咱們但願他在後臺運行,不耽誤咱們當前的操做,這
就引入了Service概念。網絡
常見的好比:訪問網絡,文件IO操做,大數據的數據庫任務,播放音樂等。多線程
Service在後臺運行,不與用戶進行交互。在默認狀況下,Service運行在應用程序進程的主線程中,若是須要在Service中處理一些網絡鏈接等耗時的操做,那麼應該將這些任務放在單獨的線程中處理,避免阻塞用戶界面。異步
Q:學習
Started Service
經過startService()啓動
一旦啓動,就運行在後臺,即使啓動它的對象(Activity)都銷燬了
一般只啓動,不返回值
一般網絡上傳或下載,操做完成後,自動中止
onStartCommand()大數據
BoundService
bindService()來綁定
提供客戶端服務器接口來啓動
發生請求,獲得返回值,甚至經過IPC通信
一個服務能夠被多個調用者綁定,只要有一個綁定這,服務運行,全部綁定者都退出,服務退出
onBind()線程
Service
IntentService 異步請求的Service
異步處理服務,新開了一個線程:HandlerThread,在線程中發消息,而後接收,處理完成後,會清除線程,而且關掉服務。在作一次性操做時,用IntentService
下載文件
三種實現方法 Local BoundService、(Remote) Messager、AIDL,這裏只介紹第一種。
Local BoundService
bindService不會阻塞線程,說明它是異步操做
Q:
unbind以後是否必定會destory?
boundService 綁定(onBind)和鏈接 onServiceConnection哪一個先執行?
onBind先執行,onServiceConnection後執行。
類似性的onUnBind和onServiceDisconneced呢?
onServiceDisconnected先執行,onUnBind後執行。
何時用startedService何時用BoundService?
什麼是Binder?Linux的Binder和Android的Binder之間的區別?
Binder就是Linux下的進程間IPC通信的一套機制,android基於它進行了封裝和改進,所以成爲默認的IPC機制。
本質區別:
boundService 實際上是有一個客戶端、服務端的概念。藉助Binder來通信。
能夠經過Notification來Running Service in the foreground,等學會Notification了,再說。
Service運行如何與用戶交互
Service是一個很方便的組件讓你運行後臺操做,而且不影響當前操做
當你須要在你當前操做的時候另外其一個更獨立操做時候能夠考慮線程,好比當前程序不關閉的狀況下運行音樂,從邏輯上你認爲須要一個後臺操做,但跟咱們如今主線程操做通信頻繁,邏輯關係緊密,那就用多線程(直接用),可以從邏輯上區分開來,就用後臺服務。(跟當前頁面無關,並長期運行的,則用服務,不然則用多線程)
瞭解Android的消息機制
掌握Broadcast發送消息的兩種類型
掌握BroadcastReceiver接收消息的編程
sendOrderedBroadcast()的理解
說說Android中發生建立兩種廣播分別是?以及他們的區別?
Broadcast Receiver做用以及爲什麼要引用:
在系統內通知和斷定執行狀態
用來接收系統及自定義消息
Broadcast Reveiver接收哪些消息
如何使用:
注意:Message、Message Queue、Message Manger