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 存储,这个是临时存储,机器重启的话就清除了
具体选哪种,根据实际情况选择, 当然能不用跨进程尽量不用,毕竟进程启动的开销会大些