国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

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

2019-10-22 18:28:59
字體:
來源:轉載
供稿:網(wǎng)友

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

實現(xiàn)步驟

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 天水市| 阿坝| 洛阳市| 莲花县| 石台县| 师宗县| 名山县| 吴堡县| 乐亭县| 澎湖县| 云龙县| 澄迈县| 彭山县| 涟源市| 扶绥县| 泰州市| 肃北| 嘉禾县| 睢宁县| 厦门市| 顺义区| 峨眉山市| 仪陇县| 教育| 曲周县| 台东县| 丹寨县| 乐平市| 靖宇县| 汪清县| 江华| 甘洛县| 黔江区| 开阳县| 嘉兴市| 蕉岭县| 聂荣县| 昌宁县| 遂溪县| 招远市| 江都市|