Android四大組件之Service

    Service,服務,是一種需要長期後臺運行的進程,例如,數據的更新,定時的輪詢,監視硬件的插入等
  一、簡介
    	Service是一種中生命週期比較長的組件,沒有界面不與用戶交互;長期運行在後臺執行與界面無關
操作;與Thread類似,但是使用線程不安全;最重要的一點是Service也是運行在主線程的,不能做耗
    時的操作
  二、詳解
      1.首先了解一下Android中的線程知識
	線程由高到低爲:前臺-可視-服務-後臺-空進程
	線程的回收是從低到高的,當內存不足時,會先從空進程開始從低到高回收;服務的級別是比較高的
     一般情況下不會被回收,一旦被回收,那麼在內存充足時,系統會自動啓動被回收掉的服務
      2.如何使用
	創建類繼承Service,並且在清單文件中配置service節點
	開啓服務
      3.生命週期
	Started Service標準模式開啓
	    其他組件調用startService方法開啓,這種Service可以無限制運行下去,除非調用stopSelf方
	  法或者其他組件調用stopService方法,但是隻能被停止一次
	BoundService綁定服務
	    調用者用bindService方法綁定服務,調用者通過一個IBinder接口和service通信,調用者也可
	  用unBindService方法解除綁定;一個Service也可和多個用戶進行綁定,所有用戶解除綁定後纔會
	  銷燬service
	  bindService(service, serviceConnection, BIND_AUTO_CREATE);
		一旦綁定成功後,服務內部的onBind方法執行,並且只執行一次,再次綁定不執行
		serviceConnection參數:ServiceConnection的對象,要重寫onServiceConnected,綁
				      定成功後執行此方法,方法中的IBinder接收onBind返回的數據
		BIND_AUTO_CREATE:如果綁定的服務不存在那麼創建出來
				
	混合模式
	    先用startService方式開啓,然後綁定服務,這時,單純的stopService和stopSelf方法關閉
	  不了服務,除非所有用戶都解綁纔可以關閉
	    使用混合模式要嚴格遵守以下步驟
		start()開啓服務
		bind()綁定服務
		unbind()解除綁定
		stop方式停止服務
      4.兩種開啓方式區別
	不同一
	 start()開啓後服務與開啓者無任何關係,調用者退出後,service也會繼續執行
	 bindService()開啓後,調用者退出service也會退出(非正常退出),可以在onDestory中解除綁定
	不同二
	 bingService開啓服務後可以調用service中的方法,而start不能
      5.綁定服務步驟
	編寫服務代碼
		public IBinder onBind(Intent intent){}
	服務內部定義代理人對象MyBinder
		代理人對象中有一個方法可以調用服務內部的方法
	onBind方法中返回代理人對象
	在activity中採用綁定服務的方法
		
bindService(service, serviceConnection, BIND_AUTO_CREATE);
	ServiceConnection中一個實現類獲取返回的代理人MyBinder對象
		public void onServiceConnected(ComponentName name,IBinder service){}
	強制類型轉換IBinder爲MyBinder
		mybinder=(MyBinder)service
	通過mybinder調用服務中的方法
      6.服務分類
	本地服務:服務在當前應用程序內部
	遠程服務:服務在其他應用程序
	  綁定遠程服務方法
	  a.代碼編寫與綁定本地服務一樣
	  b.遠程服務的接口定義文件.java-->.aidl
	  c.接口定義文件中的訪問修飾符全刪掉public private
	  d.原來代理人MyBinder extends Binder implements Iservice --->extends IService.Stub
	  e.把遠程服務的aidl文件拷在本地,目錄名要一致
	  f.iservice = IService.Stub.asInterface(service)得到遠程服務對象
	  g.調用遠程服務中方法
   三、小結
	學的東西很多,短時間內不能很好的理解,動手寫博客的時候無從下手,看着筆記一點一點的回憶,
     開始做項目,用的也是一些基本的service知識
	預習--總結--複習--回顧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章