Java Socket.io连接没有';不适用于多个片段

Java Socket.io连接没有';不适用于多个片段,java,android,socket.io,Java,Android,Socket.io,我正在使用socket.io创建一个项目。只要只有一个片段,它就工作得很好。然而,当我在主活动中添加更多片段时,它开始创建多个连接,我认为这不是一个好主意 起初,我直接从片段连接到socket.io,但这是为每个片段创建一个连接。所以我在应用程序类中创建了一个连接,并在片段中使用它,从而立即解决了多个连接问题。但现在出现了一个新问题 在internet断开和重新连接的情况下,fragment不会从应用程序类重新建立连接。我已经试了一个多星期,但没有解决办法。奇怪的是,我在网上搜索了一下,但从来没

我正在使用socket.io创建一个项目。只要只有一个片段,它就工作得很好。然而,当我在主活动中添加更多片段时,它开始创建多个连接,我认为这不是一个好主意

起初,我直接从片段连接到socket.io,但这是为每个片段创建一个连接。所以我在应用程序类中创建了一个连接,并在片段中使用它,从而立即解决了多个连接问题。但现在出现了一个新问题

在internet断开和重新连接的情况下,fragment不会从应用程序类重新建立连接。我已经试了一个多星期,但没有解决办法。奇怪的是,我在网上搜索了一下,但从来没有人问过这样的问题

下面是应用程序类中的连接代码

synchronized public Socket getSocket() {
    if (mSocket == null) {
        try {
            IO.Options opts = new IO.Options();
            opts.reconnection = true;
            opts.reconnectionDelay = 1000;
            mSocket = IO.socket("http://ddbharti.in", opts);

            mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    Log.d(TAG, "EVENT_CONNECT");
                }

            }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    Log.d(TAG, "EVENT_DISCONNECT");
                }
            }).on(Socket.EVENT_ERROR, new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    Log.d(TAG, "error");
                }
            });
            mSocket.connect();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    return mSocket;
}
这就是每个片段连接的方式

socket = application.getSocket();
socket.emit("tag", tag);
如果互联网工作正常,这个设置可以完美地工作,在300毫秒内加载。但是,当我断开/重新连接internet或保持internet断开并启动应用程序,然后连接到internet时。应用程序类中的连接连接速度很快,但由于某些原因,当前片段中的连接无法得到它

若我切换片段,那个么它将再次开始侦听来自应用程序类的连接

我是不是遗漏了什么?在重新连接的情况下,如何在不重新加载整个片段的情况下强制片段再次从应用程序类获取连接


非常感谢您的帮助。

因此,我创建了一个事件列表器来监听套接字连接状态并相应地显示ui。只需要一个与事件列表器的连接即可。

因此我创建了一个事件列表器来监听套接字连接状态并相应地显示ui。只需要一个与事件列表器的连接即可。

为什么要将套接字管理放在应用程序类中?另外,为什么片段必须调用getSocket方法?如果您编写一个只有一个套接字的管理器类,并编写读etc方法会更好,相信它会更好。我创建了一个事件监听器,它不断地将连接状态告知片段,现在一切正常。谢谢。你能举一个带有套接字连接的Manager类的例子吗?是的,我能,但你在回答中告诉我,你已经解决了这个问题。我想我已经解决了,但我总是乐于接受建议。:)为什么要将套接字管理放在应用程序类中?另外,为什么片段必须调用getSocket方法?如果您编写一个只有一个套接字的管理器类,并编写读etc方法会更好,相信它会更好。我创建了一个事件监听器,它不断地将连接状态告知片段,现在一切正常。谢谢。你能举一个带有套接字连接的Manager类的例子吗?是的,我能,但你在回答中告诉我,你已经解决了这个问题。我想我已经解决了,但我总是乐于接受建议。:)