Android AIDL實現(xiàn)跨進程通信的示例代碼
AIDL是Android接口定義語言,它可以用于讓某個Service與多個應(yīng)用程序組件之間進行跨進程通信,從而可以實現(xiàn)多個應(yīng)用程序共享同一個Service的功能。
實現(xiàn)步驟
例:用 A程序去訪問 B程序的MyService.java服務(wù)
- 在B中建立AIDL文件MyAidlService.AIDL,在AIDL文件里寫我們的接口方法
- 在MyService中寫AIDL文件定義的方法的具體服務(wù)邏輯
- 在B的manifest文件中,為Service添加action “com.xyb.servicetest.MyAidlService” 用于A靜態(tài)來訪問Service(這里是因為,如果用動態(tài)Intent (this, MyService.class), 在A中沒有MyService這個類)
- 把B的AIDL文件夾拷貝到A中,一定要注意包的路徑依然為B中的路徑
- 在A中利用靜態(tài)Intent來啟動B的服務(wù)MyService
對應(yīng)步驟詳細代碼:
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的服務(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);//對10和50相加
Log.d("onServiceConnected", sum + "");
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android實現(xiàn)用戶體驗超棒的微信WebView進度條
本篇文章主要介紹了android實現(xiàn)用戶體驗超棒的微信WebView進度條,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
ImageView點擊可變暗的實例代碼(android代碼技巧)
本文給大家分享一段實例代碼給大家介紹ImageView點擊可變暗的實例代碼,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-02-02
android使用flutter的ListView實現(xiàn)滾動列表的示例代碼
現(xiàn)如今打開一個 App,比如頭條、微博,都會有長列表,那么android使用flutter的ListView滾動列表如何實現(xiàn),本文就來詳細的介紹一下,感興趣的同學(xué)可以來了解一下2018-12-12
Android中實現(xiàn)OkHttp上傳文件到服務(wù)器并帶進度
本篇文章主要介紹了Android中實現(xiàn)OkHttp上傳文件到服務(wù)器并帶進度,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07

