我在Socket.IO
应用上运行了Android
客户端,我无法将数据从Service
(处理套接字的连接)传递到Fragments
之一1}}。
在我的一个Activities
中,我打开了一个包含个人资料页面的片段。当配置文件片段打开时,我向服务器发出一个事件,询问配置文件信息。
我从服务器获取信息没有任何问题,但是我无法将该数据(JSON字符串)发送到当前片段。
将此信息从Service
传递到Fragment
(或Activity
)的最佳做法是什么?
谢谢!
答案 0 :(得分:4)
您可以从bind
service
Activity
创建service connection
。这样您就可以与instance
service
进行沟通。
请参阅我的答案How to pass a handler from activity to service ,了解如何绑定服务并建立服务连接。
除此之外,还要在服务中定义interface
public interface OnServiceListener{
public void onDataReceived(String data);
}
在set Listener
中添加service
方法,以便从Activity
注册听众
private OnServiceListener mOnServiceListener = null;
public void setOnServiceListener(OnServiceListener serviceListener){
mOnServiceListener = serviceListener;
}
接下来,在您的Activity中实现Listener接口
公共类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
方法将数据传递给活动。
if(mOnServiceListener != null){
mOnServiceListener.onDataReceived("your data");
}