Android автобан веб-сокет не отключается

Я использую websocket в своем приложении для проверки новых сообщений. Websocket, реализованный в моем классе Service, когда я хочу остановить службу (используя stopService в Activity), он должен вызывать отключение websocket, но метод onClose не называется

Вот некоторый код:

 @Override
public int onStartCommand(Intent intent, int flags, int startId) {

    start();

    super.onStartCommand(intent, flags, startId);

    return Service.START_STICKY;
}

@Override
public void onDestroy() {
    Log.i("tag", "onDestroy service start");

    Intent intent = new Intent(this, RepeatingAlarmService.class);

    if (alarmManager != null) {
        alarmManager.cancel(PendingIntent.getBroadcast(this, REQUEST_CODE, intent, 0));
    }

    mConnection.disconnect();  // this line doesn't work ???

    super.onDestroy();

    Log.i("tag", "service stopped");
}


private void start() {
    final String uri = "ws://ws.blabla.com"
    try {

        mConnection.connect(uri, new WebSocketConnectionHandler(){
            @Override
            public void onOpen() {
                Log.i("tag", "Socket open"); // this line work well

                super.onOpen();
            }

            @Override
            public void onClose(int code, String reason) {
                Log.i("tag", "Socket closed " + String.format("code: %d, reason: %s", code, reason));  // this line doesn't been printed
                }

                super.onClose(code, reason);
            }

            @Override
            public void onTextMessage(String payload) {              
                Log.i("tag", payload); // this line work well

                super.onTextMessage(payload);
            }
        });
    } catch(Exception ex) {

    }
}

1 ответ

Решение

Ответ: используйте только последнюю версию внешних библиотек.

В файле сборки gradle я использую репозиторий maven "jitpack.io"

repositories {
        maven {
            url "https://jitpack.io"
        }
    }

Я пишу эту строку compile 'com.github.tavendo:AutobahnAndroid:v0.5.2' в dependencies раздел, чтобы сказать Gradle, что он должен скачать зависимости из репозитория jitpack.

Последняя версия на Github - 0.5.2, но если вы загрузите ее с github (не с jitpack.io), вы увидите разницу.

Другие вопросы по тегам