Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android AIDL Service綁定

Android AIDL Service綁定

編輯:Android開發實例

  使用bindService方法將如何寫呢? 具體的步驟如下:

       1. 使用bindService方法啟動服務,bindService (Intent service, ServiceConnection conn, int flags) 有三個參數,這裡大家可能會對第二個ServiceConnection和最後第三個參數的標識感到陌生,一般在我們調用bindService時需要一個ServiceConnection獲取服務實例以及狀態,代碼如下

Java代碼:
private ServiceConnection sc = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Toast.makeText(ctx, "android123 service connected", Toast.LENGTH_LONG).show();
}
@Override
public void onServiceDisconnected(ComponentName name) {
Toast.makeText(ctx, "android123 service disconnected", Toast.LENGTH_LONG).show();
}
};


        這樣,我們在服務的連接和斷開時都會收到一個Toast的消息提示,而bindService最後的參數一般使用BIND_AUTO_CREATE 標識自動創建。所以一般我們綁定一個服務,使用下面的代碼
  
        bindService(intent, sc, Service.BIND_AUTO_CREATE);
        來啟動服務,而解除綁定可以用  unbindService(sc);

        2. 上面說的都是在非具體的Service中進行操作,下面來看看Service需要處理哪些內容:
public boolean onUnbind (Intent intent) //反綁定服務時做清理工作

Java代碼:
public boolean onUnbind (Intent intent) //反綁定服務時做清理工作
public void onRebind (Intent intent) //重新綁定時觸發
public abstract IBinder onBind (Intent intent) //我們需要返回一個IBinder對象,所以要實現這個抽象方法


        3. 實現onBind方法,這裡我們簡單的給服務的調用者傳遞一個Service的實例

Java代碼:
public class cwjBinder extends Binder{
cwjService fetchService()
{
return cwjService.this;
}
}


       我們在構造Service時實例化cwjBinder使用cwjBinder binderObj=new cwjBinder();這時我們在onBind()的返回時設置為binderObj而不是null了。

       4. 回到我們調用Service的地方,在ServiceConnection中的  onServiceConnected 方法第二個參數就是我們剛才的IBinder實例了, 該方法原型為  public void onServiceConnected(ComponentName name, IBinder service) ,這時我們可以調用 fetchService方法了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved