基礎知識
綁定服務是Service類的實現(xiàn)最欠,可讓其他應用與其綁定和交互苛萎。要提供服務綁定本橙,您必須實現(xiàn)onBind()回調(diào)方法泌绣。該方法返回的IBinder對象定義了客戶端用來與服務進行交互的編程接口碉碉。
綁定到已啟動服務
正如服務文檔中所述阁危,您可以創(chuàng)建同時具有已啟動和綁定兩種狀態(tài)的服務丑婿。 也就是說朽们,可通過調(diào)用startService()啟動該服務的烁,讓服務無限期運行奶镶;此外迟赃,還可通過調(diào)用bindService()使客戶端綁定到服務。
如果您確實允許服務同時具有已啟動和綁定狀態(tài)厂镇,則服務啟動后纤壁,系統(tǒng)“絕對不會”在所有客戶端都取消綁定時銷毀服務。 為此捺信,您必須通過調(diào)用stopSelf()或stopService()顯式停止服務酌媒。
盡管您通常應該實現(xiàn)onBind()或onStartCommand(),但有時需要同時實現(xiàn)這兩者残黑。例如馍佑,音樂播放器可能發(fā)現(xiàn)讓其服務無限期運行并同時提供綁定很有用處。 這樣一來梨水,Activity 便可啟動服務進行音樂播放拭荤,即使用戶離開應用,音樂播放也不會停止疫诽。 然后舅世,當用戶返回應用時旦委,Activity 可綁定到服務,重新獲得回放控制權雏亚。
請務必閱讀管理綁定服務的生命周期部分缨硝,詳細了解有關添加綁定已啟動服務時該服務的生命周期信息。
客戶端可通過調(diào)用bindService()綁定到服務罢低。調(diào)用時查辩,它必須提供ServiceConnection的實現(xiàn),后者會監(jiān)控與服務的連接网持。bindService()方法會立即無值返回宜岛,但當 Android 系統(tǒng)創(chuàng)建客戶端與服務之間的連接時,會調(diào)用ServiceConnection上的onServiceConnected()功舀,向客戶端傳遞用來與服務通信的IBinder萍倡。
多個客戶端可同時連接到一個服務。不過辟汰,只有在第一個客戶端綁定時列敲,系統(tǒng)才會調(diào)用服務的onBind()方法來檢索IBinder。系統(tǒng)隨后無需再次調(diào)用onBind()帖汞,便可將同一IBinder傳遞至任何其他綁定的客戶端戴而。
當最后一個客戶端取消與服務的綁定時,系統(tǒng)會將服務銷毀(除非startService()也啟動了該服務)涨冀。
當您實現(xiàn)綁定服務時填硕,最重要的環(huán)節(jié)是定義您的onBind()回調(diào)方法返回的接口。您可以通過幾種不同的方法定義服務的IBinder接口鹿鳖,下文對這些方法逐一做了闡述扁眯。
創(chuàng)建綁定服務
可以通過三種方法定義接口
3.使用 AIDL
https://developer.android.com/guide/components/bound-services.html#Basics
三種方法均可以在上述網(wǎng)址上看到,這里就不一一陳述翅帜。
Android 通知欄Notification
功能作用
1.顯示接收到短消息姻檀、即使消息等信息 (如QQ、微信涝滴、新浪绣版、短信)
2.顯示客戶端的推送消息(如有新版本發(fā)布,廣告歼疮,推薦新聞等)
3.顯示正在進行的事物(例如:后臺運行的程序)(如音樂播放器杂抽、版本更新時候的下載進度等)
對應的官方鏈接
官方:http://developer.android.com/design/patterns/notifications.html
譯文:http://adchs.github.io/patterns/notifications.html
使用教程 :http://developer.android.com/training/notify-user/index.html
開發(fā)文檔 :http://developer.android.com/reference/android/app/Notification.html