Лучшая модель основана на push-уведомлениях.
Ваше устройство Android регистрируется на вашем сервере через службу Google GCM (https://developer.android.com/google/gcm/index.html). Всякий раз, когда у сервера были данные для вашего клиента, он подталкивает его через GCM.
Использование GCM избавит вас от управления живым подключением и гарантией доставки сообщений.
Если у клиента есть данные для сервера, он может подключаться-отправлять-отключать.
Вышеупомянутая модель работает НА ОСНОВЕ НАДЕЖНО лучше, а также более эффективна в работе аккумулятора, более надежна и меньше кода. Кроме того, это позволяет автоматически запускать ваше приложение, когда поступает входящее сообщение сервера, поэтому вам не нужно, чтобы «служба переднего плана» работала в ожидании сообщений, занимала телефонные ресурсы и показывала постоянное уведомление.
Для поддержания соединения с использованием сокетов, основанных на TCP, вы должны отправлять сообщение keep-alive каждый раз в то время. Если это сообщение не будет отправлено, вы восстановите соединение. Для достижения наилучших результатов попросите клиента Android сохранить работоспособность. Кроме того, у вас есть состояние подключения монитора Android, поэтому вы можете узнать в реальном времени, если ваше соединение опустилось, или вверх. Типичное устройство для Android может измениться с 3G на Wi-Fi, потерять связь под землей и т. Д.