天天看點

程序内服務Service(SimpleRandomServiceDemo)

Inter Process Communication,IPC(程序間通信,吼吼。),它可以用于解決兩個不同Android應用程式程序之間的調用和通信問題。

Service生命周期 :

調用startService()啟動Service --> onCreate() --> onStart() --> Service正在運作-->Sercice被停止-->onDestroy()--> 關閉Service

<a target="_blank" href="http://blog.51cto.com/attachment/201112/194243654.png"></a>

使用方式有兩種 :

1.啟動方式(不能擷取Service對象,無法調用Service中的方法)

1.1:Context.startService()啟動Servide

1.2:Context.stopService()終止Service或Service.stopSefl()停止Service

1.3:1.2中的終止并未真正終止,除非它所在的Activity調用onDestroy()才算真正終止

2.綁定方式(能擷取Service對象,可以調用Service中的方法,通過Connection實作)

          2.1:Context.bindService()建立服務連結

2.2:Context.unbindService()終止連結

最主要的是:同一個Service可以綁定多個服務連結,這樣可以同時為多個不同的元件提供服務

例:播放MP3暫停

Context.startService();啟動服務

Context.bindService();擷取Service對象儲存播放資訊,再用:暫停函數暫停播放

需要注意的是:在此情況下如何調用Context.stopService()終止播放的話并不能停止Service,需要在所有的服務連結關閉後,Service才能真正停止

Intent廣播消息時候要有一個唯一辨別,此處,Service在全局檔案中注冊時也要一個唯一辨別

&lt;service android:name=".繼承Service的類名"&gt;

代碼實作Service後有兩種方式啟動服務:顯式啟動和隐式啟動

1.顯式啟動:

final Intent serviceIntent = new Intent(this,繼承Service的類名.class);

startService(serviceIntent);

2.隐式啟動:

final Intent serviceIntent = new Intent();

serviceIntent.setAction("繼承Service的類_完整路徑");

&lt;intent-filter&gt;

&lt;action android:name="繼承Service的類_完整路徑"/&gt;

&lt;/intent-filter&gt;

&lt;/service&gt;

無論何種方式 :關閉方式都一樣的:stopService(serviceIntent);……………….吼吼

bindService:

建立一個能提供綁定服務的功能時,必須提供一個IBinder對象,吼吼,用戶端能用這個對象與服務互動,定義方式有三種:

1.擴充Binder類

1.1:在Service類中,建立一個Binder執行個體,包含用戶端使用的公共方法,傳回目前服務對象

1.2:在onBinder()方法中傳回Binder執行個體

1.3:在用戶端,從onServiceConnected()方法中取得Binder執行個體

2.使用Message

3.使用AIDL(Android Interface Definitation Language)

服務啟動之後是運作在主線程之中的,輸入日志中可以直接取線程資訊:(Log.i(“TAG”,Thread.getCurrentThread.getId());)

在Service裡面處理比較耗時的事件用多線程即可解決的,但在Android中系統提供了一個IntentService來專門處理異步請求,客戶通過調用startService(Intent )方法傳遞請求給IntentService,IntentService再通過 worker Thread來處理每個Intent對象,執行完以後會自動停止此Service…..吼吼。。有隊列使用哦

步驟如下:

1.寫構造方法

2.複寫onHandleIntent()方法。

     本文轉自華華世界 51CTO部落格,原文連結:

http://blog.51cto.com/mzh3344258/733364

,如需轉載請自行聯系原作者

繼續閱讀