使用Deepstream更改连接时应用崩溃

时间:2018-09-03 06:55:01

标签: android runtime-error deepstream.io

当我更改连接时,我的应用程序崩溃并显示以下堆栈跟踪:

E/AndroidRuntime: FATAL EXCEPTION: Timer-3
    Process: com.app.teemchat, PID: 9383
    io.deepstream.DeepstreamException: CONNECTION_ERROR: null
        at io.deepstream.DeepstreamClientAbstract.onError(DeepstreamClientAbstract.java:59)
        at io.deepstream.Connection$1.run(Connection.java:187)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)

请帮助我解决这个问题...

client.addConnectionChangeListener(new ConnectionStateListener() {
    @Override
    public void connectionStateChanged(ConnectionState connectionState) throws RuntimeException {
        Log.w(Tag, "ConnectionChange>>> " + connectionState.toString());
        if (connectionState.toString().equalsIgnoreCase(ConnectionState.ERROR.toString())) {
           client.close();
           doLogin();
           }

           if (connectionState.toString().equalsIgnoreCase(ConnectionState.CLOSED.toString())) {
              doLogin();
              }
        }
});

1 个答案:

答案 0 :(得分:0)

AlexBHarley说您需要添加setRuntimeErrorHandler https://github.com/deepstreamIO/deepstream.io-client-java/issues/85

  

从某种意义上说这是预期的,因为连接已经终止,因此   是CONNECTION_ERROR。如果您不希望这引发异常   您可以将侦听器放在错误事件上   client.setRuntimeErrorHandler。诚然,原因可能会更好   比null。当前的方法是两件事之一,

     

无限次重新连接尝试会存储一些本地状态并重新启动   互联网连接恢复时的会话。我们希望解决   通过恢复会话和一些更好的脱机优先功能   就像在不久的将来。