最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android AIDL實(shí)現(xiàn)跨進(jìn)程通信的示例代碼

 更新時(shí)間:2017年08月30日 08:53:58   作者:xybCoder博客  
本篇文章主要介紹了Android AIDL實(shí)現(xiàn)跨進(jìn)程通信的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下

AIDL是Android接口定義語(yǔ)言,它可以用于讓某個(gè)Service與多個(gè)應(yīng)用程序組件之間進(jìn)行跨進(jìn)程通信,從而可以實(shí)現(xiàn)多個(gè)應(yīng)用程序共享同一個(gè)Service的功能。

實(shí)現(xiàn)步驟

例:用 A程序去訪問(wèn) B程序的MyService.java服務(wù)

  1. 在B中建立AIDL文件MyAidlService.AIDL,在AIDL文件里寫(xiě)我們的接口方法
  2. 在MyService中寫(xiě)AIDL文件定義的方法的具體服務(wù)邏輯
  3. 在B的manifest文件中,為Service添加action “com.xyb.servicetest.MyAidlService” 用于A靜態(tài)來(lái)訪問(wèn)Service(這里是因?yàn)?,如果用?dòng)態(tài)Intent (this, MyService.class), 在A中沒(méi)有MyService這個(gè)類)
  4. 把B的AIDL文件夾拷貝到A中,一定要注意包的路徑依然為B中的路徑
  5. 在A中利用靜態(tài)Intent來(lái)啟動(dòng)B的服務(wù)MyService

對(duì)應(yīng)步驟詳細(xì)代碼:

MyAidlService.AIDL

interface MyAidlService { 
  int add(int a, int b); 
}

MyService.Java

public class MyService extends Service{ 
 
  MyAidlService.Stub mBinder = new MyAidlService.Stub() { 
    @Override 
    public int add(int a, int b) throws RemoteException { 
      return a + b; 
    } 
  }; 
 
  @Override 
  public IBinder onBind(Intent intent) { 
    return mBinder; 
  } 
 
  @Override 
  public void onCreate() { 
    super.onCreate(); 
  } 
 
  @Override 
  public void onDestroy() { 
    super.onDestroy(); 
  } 
 
  @Override 
  public int onStartCommand(Intent intent, int flags, int startId) { 
    return super.onStartCommand(intent, flags, startId); 
  } 
 
 
}

3.添加action

<service android:name=".MyService"> 
      <intent-filter> 
        <action android:name="com.xyb.servicetest.MyAidlService"/> 
      </intent-filter> 
    </service>

4.拷貝AIDL文件夾

5.A訪問(wèn)B的服務(wù)

Intent intent = new Intent("com.xyb.servicetest.MyAidlService"); 
        bindService(intent, connection, BIND_AUTO_CREATE);
private MyAidlService aidlService;
private ServiceConnection connection = new ServiceConnection() { 
  @Override 
  public void onServiceConnected(ComponentName name, IBinder service) { 
    Log.d("onServiceConnected", "onServiceConnected"); 
    aidlService = (MyAidlService) MyAidlService.Stub.asInterface(service); 
    try { 
      int sum = aidlService.add(10, 50);//對(duì)10和50相加 
      Log.d("onServiceConnected", sum + ""); 
    } catch (RemoteException e) { 
      e.printStackTrace(); 
    } 
  } 
 
 
  @Override 
  public void onServiceDisconnected(ComponentName name) { 
 
 
  } 
};

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

卢氏县| 衡山县| 海晏县| 榆中县| 新安县| 梧州市| 江城| 平江县| 个旧市| 鹤岗市| 永和县| 哈尔滨市| 潼南县| 白玉县| 雷山县| 双城市| 沙雅县| 彭水| 赞皇县| 内丘县| 游戏| 蒙自县| 寻乌县| 双鸭山市| 武清区| 潮安县| 金湖县| 芒康县| 理塘县| 昔阳县| 崇州市| 万载县| 河间市| 罗江县| 股票| 淮阳县| 天水市| 安仁县| 靖边县| 福鼎市| 黔南|