gpt4 book ai didi

android - 将信息从服务传递到 Activity (或 fragment )的最佳实践

转载 作者:搜寻专家 更新时间:2023-11-01 07:59:26 25 4
gpt4 key购买 nike

我在我的 Android 应用程序上运行一个 Socket.IO 客户端,但我无法从 Service(处理套接字的连接)到 Fragments 之一。

在我的一个 Activity 中,我打开了一个包含个人资料页面的 fragment 。当配置文件 fragment 打开时,我向服务器发出一个事件,要求提供配置文件信息。

我可以毫无问题地从服务器取回信息,但是我无法将该数据(JSON 字符串)发送到当前 fragment 。

将此信息从 Service 传递到 Fragment(或 Activity)的最佳做法是什么?

谢谢!

最佳答案

您可以从Activity绑定(bind)服务,并创建一个服务连接。这样你就有了serviceinstance来进行通信。

在这里查看我的答案 How to pass a handler from activity to service 关于如何绑定(bind)到服务并建立服务连接。

除此之外,在您的服务中定义一个接口(interface)

public interface OnServiceListener{
public void onDataReceived(String data);
}

service中添加一个set Listener方法来从Activity注册监听器

private OnServiceListener mOnServiceListener = null;

public void setOnServiceListener(OnServiceListener serviceListener){
mOnServiceListener = serviceListener;
}

接下来,在您的 Activity 中实现 Listener 接口(interface)

公共(public)类 MainActivity 扩展了 ActionBarActivity 实现 CustomService.OnServiceListener{

    @Override
public void onDataReceived(String data) {

}
}

接下来,当服务连接建立后,注册监听

    @Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
customService = ((CustomService.LocalBinder) iBinder).getInstance();
customService.setOnServiceListener(MainActivity.this);
}

现在,当您在服务中接收数据时,通过 onDataReceived 方法将数据传递给 Activity。

if(mOnServiceListener != null){
mOnServiceListener.onDataReceived("your data");
}

关于android - 将信息从服务传递到 Activity (或 fragment )的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23282367/

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