允许服务回调到 Activity 的方法是让服务的aidl 接口定义一个注册函数,该函数将另一个aidl 接口作为参数。
ServiceAidlInterface.aidl:
package com.test;
import com.test.CallbackAidlInterface;
interface ServiceAidlInterface {
void registerCallback(in CallbackAidlInterface callback);
}
CallbackAidlInterface.aidl:
package com.test;
interface CallbackAidlInterface {
void doCallback();
}
在您的活动中,您需要定义以下内容:
ServiceAidlInterface mService = null;
private CallbackAidlInterface mCallback = new CallbackAidlInterface.Stub() {
@Override
public void doCallback() throws RemoteException {
}
};
因此,当活动绑定您的 onServiceConnected() 时,您可以执行以下操作:
mService = ServiceAidlInterface.Stub.asInterface(serviceBinder);
service.registerCallback(mCallback)