Тяжелый трафик на сервере заставляет приложение принудительно закрыть

62
3

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

спросил(а) 2021-01-25T17:00:06+03:00 4 месяца, 2 недели назад
1
Решение
77

В настоящее время основное приложение отключается из-за загрузки сервера. Если вы поместите свои данные о подключении в поток, вы сможете избежать тайм-аута основного потока. Вы можете проверить обновленные данные из потока соединений (через некоторый общий объект), а затем представить пользователю сообщение, если данные были остановлены.

ответил(а) 2021-01-25T17:00:06+03:00 4 месяца, 2 недели назад
63

Похоже, что у вас есть код связи с сервером внутри основного Activity. Любой код, запущенный в этом Activity, будет запущен в основном потоке пользовательского интерфейса. Если ваш код отправляет запрос на ваш сервер и ожидает ответа, основной поток пользовательского интерфейса блокируется до тех пор, пока ваш сервер не ответит. ОС Android распознает, что поток пользовательского интерфейса эффективно зависает и убивает ваше приложение.


Что вам нужно сделать, так это выделить код интерфейса в Activity из кода связи с сервером. Вы должны переместить это в AsyncTask или новую комбинацию Thread/Handler. Это позволит пользовательскому интерфейсу оставаться отзывчивым, даже если ваш сервер находится под нагрузкой.

ответил(а) 2021-01-25T17:00:06+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема