gpt4 book ai didi

java - AIDL registerCallback() 谷歌文档

转载 作者:太空狗 更新时间:2023-10-29 16:40:57 27 4
gpt4 key购买 nike

google docs有一个关于如何制作 AIDL 服务的教程。但是,当我尝试执行相同操作时,出现错误消息“未定义 IRemoteInterface 类型的方法 registerCallback(IRemoteInterface)。

我在谷歌搜索的任何教程中都没有看到这个“registerCallback”方法,我的问题是为什么它不起作用/为什么其他地方不使用它?

我觉得我的部分问题是对服务及其将信息发送到与其绑定(bind)的对象的“回调”的根本误解。谢谢!

AIDL:

package com.mine.ben;

import com.mine.servicenexus.RelPoint;


interface IRemoteInterface {

Location getLastLocation();
RelPoint getRelPoint();
int logControlActivity(in String text,in int severity);
int getRunningStatus();
}

更新的问题:添加

时,我的 AIDL 文件中出现语法错误
void registerCallback(IRemoteServiceCallback);
void unregisterCallback(IRemoteServiceCallback);

我已经清理了我的工作区,它会自动构建。这是gen文件的问题吗?

最佳答案

我的应用程序中的几行:

interface IGpsService {
Bundle getNavigationMessage();
void resetStatistics();
void recordingEnable(boolean recordingEnabled, boolean continueLastTrack);
void registerCallback(IGpsChanged cb);
void unregisterCallback(IGpsChanged cb);
boolean isRecordingEnabled();
void setGhost(int trackId);
void startGhost();
void sendUserEvent(int eventId);
}

回调接口(interface)本身的第二个文件:

interface IGpsChanged{
oneway void onLocationChanged(out Bundle message);
}

最重要的是 - 通常您不需要那些 .aidl 定义。只有在应用程序外部公开服务方法时才需要这样做。

了解它的工作原理也很有帮助 - forst aidl 定义了基本服务的方法。 registerCallback 不是一个“特殊”方法,它和其他任何方法一样普通,只是允许为双向通信定义回调(在这种特殊情况下 - 将一些位置信息从 sesrvice 发送到绑定(bind) Activity (或其他组件)。

正如您在评论中提到的 - 您不想创建服务,只是从应用程序外部使用一些服务。在那种情况下,您需要那些外部 aidl 文件,而不是您编写的文件。将在/gen 目录中生成用于使用服务方法的 stub 。

关于java - AIDL registerCallback() 谷歌文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17866923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com