目录
一、什么是AIDL
AIDL,即 Android Interface Definition Language,用于android不同进程间通信接口。同一个应用里面还是建议用正常接口实现功能即可。
二、AIDL语法规格
.aidl接口文件在src下和java文件夹并列,如下图:
创建aild,在src下右键,创建AIDL文件即可。
AIDL定义规则:
注意:定义aidl接口以后应该先build以下项目,build会根据aidl接口生成对应的接口文件和实现Binder的实现类,即接口.Stub,这样才能在调用处访问到接口中的方法。
详细更多的传递对象类型可参考上述官方地址中的说明。
三、AIDL实例
案例说明:模拟一个客户端和服务端,客户端调用aidl接口中的方法,请求到服务端,服务端拉起一个页面,点击确定以后返回结果给客户端。
客户端:
首先声明,客户端和服务端的aidl接口是一致的,包括包名。
定义两个aidl接口,一个是接收结果回调,一个是请求方法。
package com.example.paydemo;
interface ThirdPayResult {
void onPaySuccess();
void onPayFailed(in int errorCode,in String message);
}
package com.example.paydemo;
import com.example.paydemo.ThirdPayResult;
interface ThirdPayAction {
void requestPay(String orderInfo,float money,ThirdPayResult callback);
}
客户端activity
public class MainActivity extends AppCompatActivity {
private static final String TAG = "YY_MainActivity";
private boolean bind = false;
private MyServiceConnection mServiceConnection;
private ThirdPayAction thirdPayAction;
private MyHandler mMyHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setCo