读书人

Android AIDL 简略实用

发布时间: 2013-10-22 16:17:14 作者: rapoo

Android AIDL 简单实用
1 什么是AIDL,AIDL是干嘛用的呢?
AIDL 是一个内部进程间通信描述语言,于我来理解,它的定义形式是很固定,简单的

2 AIDL 在什么情况下使用?
举个例子,当你的Android APP想调用第三方应用或者你自己写的服务进程,可以使用,

3 怎么使用呢?

首先你要先定义好你的AIDL文件 XXX.aidl,很简单,看文件的内容

 private AidlService mAidlService = null;        private ServiceConnection mServiceConnection = new ServiceConnection() {        @Override        public void onServiceDisconnected(ComponentName name) {            // log("onServiceDisconnected");        }        @Override        public void onServiceConnected(ComponentName name, IBinder service) {            mAidlService = AidlService.Stub.asInterface(service);        }    };

该连接返回服务进程的binder对象,有了它就可以调用服务端接口啦


好了,到此,你就基本掌握AIDL的使用了,是不是很简单?


题外之延伸:

通过这个例子,你有没有想到Service中 startService 和 bindService的区别?

注意bind的service销毁了,activity 要解绑否则activity 也会销毁

平时大家在使用跨进程的时候,注意方式的选择,跨进程无非是数据的共享,可采用的方法不单单是AIDL,可以如下

1 广播Brocastcast

2 ContentProvider,通过数据库存储

3 Sharapreference,前提是设置开放模式

4 文件

5 SystemProperty 存储,这个是临时存储,机器重启的话就清除了


具体选哪种,根据实际情况选择, 当然能不用跨进程尽量不用,毕竟进程启动的开销会大些

读书人网 >网络基础

热点推荐