Настройка времени ожидания для сетевых вызовов для мобильного приложения - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть следующие вопросы относительно установки таймаута в коденамоне.пожалуйста, сообщите.

  1. Я вижу повторную попытку / отмену сообщения в приложении, когда мобильное приложение пытается подключиться к Интернету или переключается между сетями Wi-Fi / Carrier.Я установил failsilently () для всех запросов addToQueueandWait ().Тем не менее я вижу это сообщение об ошибке в диалоге.Есть ли способ, которым я могу установить тайм-аут или другой параметр для пользователя, чтобы не отображать диалоговое окно (Пользователь продолжает нажимать на повтор, и ничего не работает, пока сеть не подключится).Как я могу справиться с этой ситуацией.

  2. Является ли настройка Timeout лучшим вариантом в этом сценарии?Если да, то настройка для запроса лучше, чем настройка для NetworkManager?

  3. Каким будет идеальное время ожидания для устройств Android и IOS, поскольку у большинства пользователей есть время от 1 до 5 минутзаблокировать экран телефона.

  4. Работает ли настройка Timeout только для установления соединения с сервером или будет работать в течение медленного времени отклика от сервера (иногда 20 мс занимает 1500 мс).Процесс входа в приложение занимает время, когда устройство испытывает проблемы с подключением к Интернету, и включает в себя 7-8 сетевых вызовов. В этом случае лучше установить тайм-аут на уровне запроса или на уровне сети?

  5. Какие сообщения об ошибках могут выдаваться по таймауту и ​​которые могут использоваться как для медленного соединения / без соединения.

Спасибо

1 Ответ

0 голосов
/ 20 сентября 2018

Это код, который обрабатывает флаг failSilently.Как вы можете видеть, если failSilently определено, метод вернется.Так что либо вы не определили failSilently как true, либо какая-то другая часть кода установила его в false.Или у вас есть прослушиватель сетевых ошибок, который показывает это диалоговое окно:

protected void handleException(Exception err) {
    if(exceptionListeners != null) {
        if(!isKilled()) {
            NetworkEvent n = new NetworkEvent(this, err);
            exceptionListeners.fireActionEvent(n);
        }
        return;
    }
    if(killed || failSilently) {
        failureException = err;
        return;
    }
    Log.e(err);
    if(silentRetryCount > 0) {
        silentRetryCount--;
        NetworkManager.getInstance().resetAPN();
        retry();
        return;
    }
    if(Display.isInitialized() && !Display.getInstance().isMinimized() &&
            Dialog.show("Exception", err.toString() + ": for URL " + url + "\n" + err.getMessage(), "Retry", "Cancel")) {
        retry();
    } else {
        retrying = false;
        killed = true;
    }
}

Тайм-аут происходит на этапе подключения, если время ожидания подключения не применяется.Вам необходимо явно уничтожить соединение.Так что 3, вероятно, не имеет значения.

Время ожидания между платформами не одинаково, обычно я предлагаю использовать прослушиватель ошибок и вместо того, чтобы полагаться на результат ошибки, использовать этот код для проверки возможности соединения.

...