写一个简单的AIDL

1.首先创建一个AIDL文件,并添加上两个接口。
IMyAidlInterface.aidl

package com.example.broadcastdemo;

// Declare any non-default types here with import statements

interface IMyAidlInterface {

void request();
String getName();
}


2.编写服务端实现AIDL相应的接口
MyService.java

public class MyService extends Service {
public MyService() {
}

private final IBinder iBinder = new IMyAidlInterface.Stub() {
@Override
public void request() throws RemoteException {


}

@Override
public String getName() throws RemoteException {
return "您好,我的名字叫服务端";
}
};

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

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

}


3:使用

private void binAidl() {
if (myAidlInterface == null) {
try {
Intent intent = new Intent("com.example.broadcastdemo.MyService");
intent.setPackage("com.example.broadcastdemo");
boolean result = bindService(intent, ServiceConnection, Context.BIND_AUTO_CREATE);
Log.e(TAG, "createPopupServiceConnection: result " + result);
}catch (Exception e){
Log.e(TAG, "createPopupServiceConnection: Exception" + e.getLocalizedMessage());
}

}
}

private android.content.ServiceConnection ServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.e(TAG, "onServiceConnected: ServiceConnection");
myAidlInterface = IMyAidlInterface.Stub.asInterface(service);
}

@Override
public void onServiceDisconnected(ComponentName name) {
Log.e(TAG, "onServiceDisconnected: ServiceConnection");
myAidlInterface = null;
}
};


private void getName(){
if (myAidlInterface != null) {
try {
String str = myAidlInterface.getName();
Log.e(TAG, "" + str);
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
posted @ 2020-12-04 10:23  mao的博客  阅读(259)  评论(0编辑  收藏  举报