91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android AIDL實現跨進程通信的示例代碼

發布時間:2020-08-30 21:03:52 來源:腳本之家 閱讀:269 作者:xybCoder博客 欄目:移動開發

AIDL是Android接口定義語言,它可以用于讓某個Service與多個應用程序組件之間進行跨進程通信,從而可以實現多個應用程序共享同一個Service的功能。

實現步驟

例:用 A程序去訪問 B程序的MyService.java服務

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

對應步驟詳細代碼:

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訪問B的服務

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);//對10和50相加 
      Log.d("onServiceConnected", sum + ""); 
    } catch (RemoteException e) { 
      e.printStackTrace(); 
    } 
  } 
 
 
  @Override 
  public void onServiceDisconnected(ComponentName name) { 
 
 
  } 
};

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

横山县| 镇沅| 英山县| 苏尼特左旗| 河津市| 嘉祥县| 临高县| 集安市| 杭锦后旗| 满洲里市| 陇南市| 苍梧县| 新巴尔虎左旗| 黄浦区| 合阳县| 南雄市| 泰安市| 民丰县| 昌图县| 仁布县| 绥化市| 城口县| 行唐县| 黄山市| 桑日县| 手游| 卢湾区| 永春县| 英山县| 陇川县| 皋兰县| 甘泉县| 天柱县| 镇远县| 揭东县| 舒城县| 金湖县| 台南市| 和田县| 阳春市| 伊春市|