Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 淺談 Android Service

淺談 Android Service

編輯:關於Android編程

1.使用Service 2.綁定Service 3.Service的生命周期 -------------------------------------------- 1.使用Service   啟動Service: Content.startService( intent ); 停止Service: Content.stopService( intent ); 2.綁定Service   綁定服務 Content.bindService(intent,this,BIND_AUTO_CREATE); 解除綁定服務 Content.unbindService( this );   綁定完之後,會有兩個方法需要實現: 服務被綁定之後執行 onServiceConnected(ComponentName name ,IBinder service){ } 服務所在進程崩潰之後,或者被銷毀時執行 onServiceDisconnected(ComponentName name){ }       這裡需要返回一個實現了IBinder接口的Binder();   例子代碼: 創建一個serviceruning,是否運行,默認是false;     在onCreate中為true時才運行,當為false時,停止運行。     }.start; 銷毀時,設置serviceruning為false,停止線程運行。     3.Serice生命周期  

\

同時啟動服務並且綁定服務,必須解除綁定服務和停止服務,這個服務才會停止掉。 啟動服務,退出當前Activity,發現服務沒有被銷毀,還在運行,返回Activity,點擊銷毀服務,服務才銷毀; 綁定服務,退出當前Activity,發現拋出一個異常,並取消綁定。 注:

1)可以通過調用Context.startService()啟動一個Service,這可能會觸發Service的onCreate()和onStart()操作,具體來說即執行startService()一定會觸發onStart(),但如果該Service已經在系統中存在,則onCreate()不會被再次調用,它只在Service第一次啟動時觸發。

通過Context.startService()啟動的Service會一直運行,直到通過Context.stopService()或者stopSelf()停止它。多次通過startService()啟動某個服務並不會生成多個實例,但會導致服務的onStart()被多次調用,當然由於只有一個實例,因此無論啟動多少次,停止它只需調用一次Context.stopService()或stopSelf()就可以了。  

2)也可以通過Context.bindService()來獲得一個服務的鏈接,這個鏈接是一直會保持到通過Context.unbindService()斷掉它。如果在連接時系統中還沒有該服務,則可能會新創建一個服務,這時Service的onCreate函數也同樣會被調用。連接建立時會Service的onBinder會被觸發,通過onBinder可以返回連接建立後的IBinder接口對象,使用服務的客戶端(比如某個Activity)可以通過IBinder對象和Service交互。

一個Service如果是通過bindService()啟動的,那麼它會一直存在到沒有任何客戶端與它保持連接為止,原因是可能有很多客戶端與這個服務保持連接,這時如果某個鏈接被客戶端主動斷掉只會是Service的鏈接數減1,當減至0的時候這個Service就會被銷毀。  

3)一個Service既可以被啟動(start)也可以被連接(bind),這時Service的生命周期取決於它被創建的方式,如果是通過Context.startService()創建的則和第一種情況一樣,如果是通過Context.bindService()使用參數Context.BIND_AUTO_CREATE創建的,則情況和第二種一樣。

當然,在Service停止,被銷毀時,會觸發其onDestroy()函數,我們需要在這裡完成這個Service相關資源的清理,比如停止其子線程,注銷監聽器等等。  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved