本文共 1216 字,大约阅读时间需要 4 分钟。
AIDL(AndRoid 接口描述语言)是一种借口描述语言; 编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的. 如果需要在一个Activity中, 访问另一个Service中的某个对象, 需要先将对象转化成AIDL可识别的参数(可能是多个参数), 然后使用AIDL来传递这些参数, 在消息的接收端, 使用这些参数组装成自己需要的对象.
AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.
我通过学习最基本方法写了一个小类。
package com.smart.aidl; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.os.RemoteException; public class SmartService extends Service { public class MyServiceImpl extends AidlService.Stub { @Override public String getValue() throws RemoteException { // TODO Auto-generated method stub return "Smart like Android!" ; } } @Override public IBinder onBind(Intent arg0) { return new MyServiceImpl(); } } |
package com.smart.aidl; import android.app.Activity; import android.os.Bundle; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); } } |
package com.smart.aidl; interface AidlService { String getValue(); } |