【问题标题】:Android Socket.IO with Fragments带有片段的 Android Socket.IO
【发布时间】:2013-01-16 15:52:44
【问题描述】:

我的应用程序使用 Koush 的 web-sockets/Socket.IO 库仅用于一个片段。 (https://github.com/koush/android-websockets)

我在让 Socket.IO 客户端与片段生命周期及其线程正常工作时遇到一些问题。

在大多数情况下,我的片段如下所示:


public class ScoresFragment extends SherlockFragment {

    public SocketIOClient socket;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        createSocket();
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onPause() {
        try {
            this.socket.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
        super.onPause();
    }

    @Override
    public void onResume() {
        socket.connect();
        super.onResume();
    }

    public void createSocket() {
        this.socket = new SocketIOClient(URI.create("http://blah-url"), new SocketIOClient.Handler() {
            //Required methods here
        }
    }

    @Override
    public void onCreateView(LayoutInflater inflater, ViewGroup group, Bundle savedInstanceState) {
        //Everything for the layout here
    }
}

当我尝试断开套接字时,我遇到的错误是 onPause() 方法。 套接字连接得很好,但是一旦我更改片段,我就会崩溃。

致命例外:主要 java.lang.NullPointerException 在 com.codebutler.android_websockets.SocketIOClient.cleanup(SocketIOClient.java:195) 在 com.codebutler.android_websockets.SocketIOClient.disconnect(SocketIOClient.java:188) 在 edu.bgsu.asf.athletics.fragments.ScoresFragment.onPause(ScoresFragment.java:14)

我在某处读到我可能不得不对线程保持警惕,并且我可能不得不为此使用处理程序,但是 web-sockets 的 git 页面并没有暗示必须使用类似的东西。提前致谢。

编辑:

SocketIOClient.java的部分:

public void disconnect() throws IOException {
    cleanup(); //Line 188
}

/////////////////////////////////////////////

private void cleanup() {
    mClient.disconnect();
    mClient = null;

    mSendLooper.quit(); //Line 195
    mSendLooper = null;
    mSendHandler = null;
}

【问题讨论】:

    标签: android node.js socket.io


    【解决方案1】:

    创建静态套接字并将其连接到您的片段所在的父活动中。之后,当您的片段通过 emit 方法创建订阅时。并在父活动的 onStop 方法中关闭套接字。请按照这些说明进行操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多