记录工作过程中aidl的使用

67 阅读1分钟

首先需要在src下的main目录下创建aidl文件夹image.png aidl分为客户端和服务端 1.先说客户端 创建例如com.android.aidl包名下创建一个AidlSerData.aidl文件

里面是一个接口包含一个提供数据的方法
interface AidlSerData {
    String dataReport(String dataValue);
}

服务端也创建一个相同包名的aidl文件 并且创建一个 AIDLService

private IBinder iBinder = new AidlSerData.Stub() {
    @Override
    public String dataReport(String dataValue) throws RemoteException {
    //获取客户端传过来的数据
        return dataValue;
    }

};

@Override
public void onCreate() {
    super.onCreate();
}

@Override
public IBinder onBind(Intent intent) {
    return iBinder;
}

客户端进行启动service


service = new Intent(LoginActivity.this, AIDLService.class);
bindService(service, serviceConnectionIDataReport, Context.BIND_AUTO_CREATE);
private AidlSerData aidlSerData;
private ServiceConnection serviceConnectionIDataReport = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        aidlSerData = AidlSerData.Stub.asInterface(service);
        try {
            if (aidlSerData != null) {
            //发送数据
            aidlSerData.dataReport(jsonBaseProbeBean);
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("ProBeUtils", "Exception: " + e.getMessage());
        }

    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        Log.e("ProBeUtils", "onServiceDisconnected: " + name);
    }
};

这样就可以愉快的使用了,别忘了service需要在清单文件中注册,可以根据需要添加对应action