AIDL是Android接口定义语言,它可以用于让某个Service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个Service的功能。
实现步骤
例:用 A程序去访问 B程序的MyService.java服务
对应步骤详细代码:
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) {
}
};
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。