这里有新鲜出炉的精品教程,程序狗速度看过来!
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
本篇文章主要介绍了Android AIDL实现跨进程通信的示例代码,具有一定的参考价值,有兴趣的可以了解一下
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) {
- }
- };
来源: http://www.phperz.com/article/17/0915/345652.html