Android AIDL實現(xiàn)跨進(jìn)程通信的示例代碼
AIDL是Android接口定義語言,它可以用于讓某個Service與多個應(yīng)用程序組件之間進(jìn)行跨進(jìn)程通信,從而可以實現(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)步驟詳細(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訪問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í)有所幫助,也希望大家多多支持腳本之家。
- 詳解Android跨進(jìn)程通信之AIDL
- Android實現(xiàn)跨進(jìn)程接口回掉的方法
- Android AIDL實現(xiàn)兩個APP間的跨進(jìn)程通信實例
- android使用AIDL跨進(jìn)程通信(IPC)
- 詳解Android跨進(jìn)程IPC通信AIDL機(jī)制原理
- Android 跨進(jìn)程SharedPreferences異常詳解
- Android 跨進(jìn)程通Messenger(簡單易懂)
- Android編程實現(xiàn)AIDL(跨進(jìn)程通信)的方法詳解
- Android應(yīng)用程序四大組件之使用AIDL如何實現(xiàn)跨進(jìn)程調(diào)用Service
- 分析CmProcess跨進(jìn)程通信的實現(xiàn)
相關(guān)文章
VerticalBannerView仿淘寶頭條實現(xiàn)垂直輪播廣告
這篇文章主要為大家詳細(xì)介紹了VerticalBannerView仿淘寶頭條實現(xiàn)垂直輪播廣告,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08
Android RecyclerView實現(xiàn)下拉刷新和上拉加載
這篇文章主要介紹了Android RecyclerView實現(xiàn)下拉刷新和上拉加載的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05
java從輸入流中獲取數(shù)據(jù)并返回字節(jié)數(shù)組示例
這篇文章主要介紹了java從輸入流中獲取數(shù)據(jù)并以字節(jié)數(shù)組返回,這是一個常用的方法,以后可以直接拿來用。這種輸入流可以來自Android本地,也可以來自網(wǎng)絡(luò)2014-01-01
Android音視頻開發(fā)之MediaPlayer使用教程
Android多媒體框架支持播放提供了MediaPlayerAPI,可以通過MediaPlayer來實現(xiàn)媒體文件播放。可以說MediaPlayer是非常方便使用的多媒體播放器。本文將詳細(xì)講解MediaPlayer的使用,需要的可以參考一下2022-04-04

