Мне нужно бесконечно устанавливать TCP-соединение с сервером.
Почему?
Для начала это технически невозможно.Пользователи будут переключаться между сетями (например, находились в режиме Wi-Fi, отказались от 3G), пользователи будут покидать зоны, где у них есть покрытие Интернет, пользователи будут включать режим полета и т. Д.
В настоящее время яиметь службу Android с флагом "on_course", поэтому Android не должен ее убивать.
В Android нет такого понятия, как "on_course".Сервисы Android могут и будут убиты пользователями (убийцами задач, принудительным остановом в Manage Services) или операционной системой.И, поскольку это будет вечный сервис, ваши пользователи будут убивать ваш сервис, если они не понимают, какую ценность он постоянно предоставляет.
Я пытался заблокировать телефонот сна с частичной блокировкой пробуждения, и это решает проблему, но телефон потребляет слишком много батареи, что невозможно.
Исправлено.
Я заметил, что AlarmManagerможет помочь в этой задаче, поэтому я хочу запланировать тревогу, чтобы обновить работающую службу и затем отправить пинг.Это позволит процессору перейти в спящий режим, а также отправит пинг.Я не проверял этот подход в данный момент, но выполнимо ли?
Конечно.ИМХО, вы все равно будете расходовать слишком много батареи.Пожалуйста, позвольте своему пользователю контролировать период опроса с помощью широкого спектра опций (например, 10 минут, 30 минут, один час, никогда).
Как службы Android, такие как Gmail, решают такие проблемы?
Они используют C2DM, которая является частью операционной системы, и для ее разработки потребовалось много инженерных разработок.Об этом была презентация на конференции Google I | O 2010 года - видео должно быть на YouTube.Имейте в виду, что каждые 30 минут они выполняют пинг сердцебиения, и они оптимизируют ситуацию, когда устройство находится в режиме 3G (чтобы радио Wi-Fi могло отключиться после бездействия).
Если ваша цель - постоянное соединениедля реализации канала связи push-стиля, рассмотрите возможность использования C2DM.