从服务到活动(或片段)的传递信息的最佳实践

时间:2014-04-25 00:51:49

标签: android android-fragments socket.io android-service

我在Socket.IO应用上运行了Android客户端,我无法将数据从Service(处理套接字的连接)传递到Fragments之一1}}。

在我的一个Activities中,我打开了一个包含个人资料页面的片段。当配置文件片段打开时,我向服务器发出一个事件,询问配置文件信息。

我从服务器获取信息没有任何问题,但是我无法将该数据(JSON字符串)发送到当前片段。

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

谢谢!

1 个答案:

答案 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");
    }