編輯:Android開發教程
一、bindService簡介
bindService是綁定Service服務,執行service服務中的邏輯流程。
service通過 Context.startService()方法開始,通過Context.stopService()方法停止;也可以通過Service.stopSelf()方法或者 Service.stopSelfResult()方法來停止自己。只要調用一次stopService()方法便可以停止服務,無論之前它被調用了多少次的 啟動服務方法。
客戶端建立一個與Service的連接,並使用此連接與Service進行通話,通過Context.bindService()方法 來綁定服務,Context.unbindService()方法來關閉服務。多個客戶端可以綁定同一個服務,如果Service還未被啟動, bindService()方法可以啟動服務。
上面startService()和bindService()兩種模式是完全獨立的。你可以綁定一個已經 通過startService()方法啟動的服務。例如:一個後台播放音樂服務可以通過startService(intend)對象來播放音樂。可能用戶 在播放過程中要執行一些操作比如獲取歌曲的一些信息,此時activity可以通過調用bindServices()方法與Service建立連接。 這種情況下,stopServices()方法實際上不會停止服務,直到最後一次綁定關閉。
二、bindService啟動流程
context.bindService() ——> onCreate() ——> onBind() ——> Service running ——> onUnbind() ——> onDestroy() ——> Service stop
onBind()將返回給客戶端一 個IBind接口實例,IBind允許客戶端回調服務的方法,比如得到Service的實例、運行狀態或其他操作。這個時候把調用者 (Context,例如Activity)會和Service綁定在一起,Context退出了,Srevice就會調用onUnbind->onDestroy相應退出。
所以調用bindService的生命周期為:onCreate --> onBind(只一次,不可多次綁定) --> onUnbind --> onDestory。
在Service每一次的開啟關閉過程中,只有onStart可被多次調用(通過多次startService調用),其他 onCreate,onBind,onUnbind,onDestory在一個生命周期中只能被調用一次。詳見:Android Service 服務(一)—— Service
三、bindService生命周期
像一個activity那樣,一個service有些可以用來改變狀態的生命周期方法, 但是比activity的方法少,service生命周期方法只有三個public
void onCreate()
void onStart(Intent intent)
void onDestroy()
通過實現這三個生命周期方法,你可以監聽service的兩個嵌套循環的生命周期:
1、整個生命周期
service的整個生命周期是在onCreate()和onDestroy()方法之間。和activity一樣,在 onCreate()方法裡初始化,在onDestroy()方法裡釋放資源。例如,一個背景音樂播放服務可以在onCreate()方法裡播放,在 onDestroy()方法裡停止。
2、活動的生命周期
service的活動生命周期是在onStart()之後,這個方法會處理通 過startServices()方法傳遞來的Intent對象。音樂service可以通過開打intent對象來找到要播放的音樂,然後開始後台播放。 注: service停止時沒有相應的回調方法,即沒有onStop()方法,只有onDestroy()銷毀方法。
onCreate()方法和 onDestroy()方法是針對所有的services,無論它們是否啟動,通過Context.startService()和Context.bindService()方法都可 以訪問執行。然而,只有通過startService()方法啟動service服務時才會調用onStart()方法。
Android應用可以包含,多個Activity,某個Activity可以啟動另外的Activity。這些Activity采用棧結構來管理,新打開的 Activity疊放
最近對Google開發的開源智能手機操作系統Android比較感興趣,因此根據網上的資料下載了Eclipse,Android SDK3.0,並根據提示的步驟進行了環境的配
在安裝後Android開發環境和創建好Android模擬器之後,就可以開始寫第一個Android應用“Hello,World”。後面的例子均 采用
1.1 BufferQueue詳解上一小節我們已經看到了BufferQueue,它是SurfaceTextureClient實現本地窗口的關鍵。從邏輯上來推斷,Buffe