歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android aidl實現兩個apk之間遠程調用Service

Aidl,Android平台的IPC方式之一,基於系統的Ibinder機制。

網上大多數例子都是在一個apk下來測試調用service,現在我在兩個project下面來調用。

一個是server project,一個是client project

首先我們建立的是server project,這裡面要實現aidl文件和一個service,activity只是用來啟動service的,當然,你也可以通過發廣播的形式來啟動service。

首先看IAidlService.aidl文件:

  1. package com.ds.server;   
  2. interface IAidlService {     
  3.     int getType();    
  4. }    

這樣在eclipse裡面自動編譯的時候會在gen下面生成IAidlService.java文件(燈下我們的client project要用)。
然後新建一個service,這個service裡面has a IAidlService的stub對象,service具體代碼如下:

  1. package com.ds.server;   
  2.   
  3. import android.app.Service;   
  4. import android.content.Intent;   
  5. import android.os.IBinder;   
  6. import android.os.RemoteException;   
  7. import android.util.Log;   
  8.   
  9. public class AidlService extends Service {   
  10.   
  11.     private IAidlService.Stub mBinder = new IAidlService.Stub() {   
  12.   
  13.         @Override  
  14.         public int getType() throws RemoteException {   
  15.             // TODO Auto-generated method stub   
  16.             return 5;   
  17.         }   
  18.     };   
  19.   
  20.     private void Log(String str) {    
  21.         Log.d("AidlService""------ " + str + "------");   
  22.     }   
  23.   
  24.     @Override  
  25.     public void onCreate() {   
  26.         Log("service create");      
  27.     }   
  28.   
  29.     @Override  
  30.     public void onStart(Intent intent, int startId) {   
  31.         Log("service start id=" + startId);   
  32.     }   
  33.   
  34.     @Override  
  35.     public IBinder onBind(Intent t) {   
  36.         Log("service on bind");   
  37.         return mBinder;   
  38.     }   
  39.   
  40.     @Override  
  41.     public void onDestroy() {   
  42.         Log("service on destroy");   
  43.         super.onDestroy();   
  44.     }   
  45.   
  46.     @Override  
  47.     public boolean onUnbind(Intent intent) {   
  48.         Log("service on unbind");   
  49.         return super.onUnbind(intent);   
  50.     }   
  51.   
  52.     public void onRebind(Intent intent) {   
  53.         Log("service on rebind");   
  54.         super.onRebind(intent);   
  55.     }   
  56.   
  57. }  
Copyright © Linux教程網 All Rights Reserved