gpt4 book ai didi

android - 从服务传递数据

转载 作者:行者123 更新时间:2023-11-30 03:35:07 25 4
gpt4 key购买 nike

我有一个 Android 服务,它从一些外部硬件收集数据。我正在使用所示的回调结构使该数据可用于我的 Activity here .

我提供的数据是 ArrayList<MyClass> .在阅读 Android API 文档时,似乎建议的方法是使用广播事件和 Parcelable .我还看到了 Android 应用程序中使用的回调,所以问题是重构我的代码以使用广播有什么优势?

现在,在未来,我希望允许外部应用程序访问此服务(例如 Tasker),因此我猜测我使用的回调方法将仅在本地应用程序中使用。所以问题是如何从 Service 进行回调到Activity使用 AIDL 描述。

最佳答案

允许服务回调到Activity的方法是让服务aidl接口(interface)定义一个注册函数,该函数将另一个aidl接口(interface)作为参数。

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();
}

在您的 Activity 中,您需要定义以下内容:

ServiceAidlInterface mService = null;

private CallbackAidlInterface mCallback = new CallbackAidlInterface.Stub() {
@Override
public void doCallback() throws RemoteException {
}
};

因此,当 Activity 绑定(bind)您的 onServiceConnected() 被调用时,您可以执行以下操作:

   mService = ServiceAidlInterface.Stub.asInterface(serviceBinder);
service.registerCallback(mCallback)

关于android - 从服务传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736161/

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