Сбой приложения при смене соединения с использованием deepstream - PullRequest
0 голосов
/ 03 сентября 2018

Когда я меняю соединение, мое приложение падает и показывает следующую трассировку стека:

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 голосов
/ 03 сентября 2018

AlexBHarley говорит, что вам нужно добавить setRuntimeErrorHandler https://github.com/deepstreamIO/deepstream.io-client-java/issues/85

это ожидается в том смысле, что связь прервалась, так что является CONNECTION_ERROR. Если вы не хотите, чтобы это выдало исключение вы можете поместить слушателя в событие ошибки с client.setRuntimeErrorHandler. По общему признанию причина могла быть лучше чем ноль. Текущий подход - это одно из двух:

бесконечные попытки переподключения сохранить локальное состояние и перезапустить сеанс, когда подключение к Интернету возвращается. Мы надеемся решить лучшая автономная первая функциональность с возобновлением сеансов и как в ближайшее время.

...