Я работаю над приложением, которое постоянно отправляет некоторые данные, полученные с устройства, на серверный API. И у меня есть служба, работающая все время в фоновом режиме и собирающая данные, а затем сетевой поток в этой службе, который отвечает за установление соединения с сервером и отправку данных.
Моя проблема заключается в том, что, хотя я получаю блокировки Wake и WiFi при запуске службы, в какой-то момент, когда устройство находится в сети 3g с плохим соединением, кажется, что метод записи сокета просто зависает: я вижу это из журналов, которые я вывожу после каждой операции
Сетевой поток очень прост и может быть описан как
while(true) {
if(!connectedToServer) {
connectToServer();
}
acquireData();
sendData();
}
А sendData очень прост — он записывает данные в выходной поток сокета. Из того, что я вижу в журналах, кажется, что вызов OutputStream.write() просто блокируется на неопределенное время при плохом соединении.
Кто-нибудь сталкивался с подобными проблемами?
Спасибо,