通过回调的 Aidl 结果

Aidl result via callback

我写了一个记录一些音频信号的应用程序。此信号必须由安装在我的设备上的插件处理。主应用和插件之间的通信,我们使用aidl接口。

由于我是这些接口的新手,我想知道以下是否适用于插件 return 我的主要应用程序的结果:

我创建了一个界面:

public interface MainAppCallback {
    public void onResult(String result);
}

我在我的记录线程中实现它:

MainAppCallback callback = new MainAppCallback() {
    @Override
    public void onResult(String result) {
        // Add result to member variable of recording thread
    }
};

在我的aidl接口中,我定义了插件的方法:

/** Callback to send results to main application
*/
void registerCallback(MainAppCallback callback);

/** The code is documentation enough
*/
void unregisterCallback();

然后我想在我的记录线程中做这样的事情:

PlugIn.registerCallback(callback);

这是正确的方法吗,还是我做错了什么?

没错。确保您也为回调接口定义了 aidl 文件。

这里有一个答案,其中已经包含回调所需的 2 个 aidl 文件的示例: Android remote service callbacks

这里还有完整的示例代码:https://developer.android.com/guide/components/aidl.html