Android-сервис спит после длительного периода времени - PullRequest
0 голосов
/ 07 января 2011

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

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

Я пытался использовать WakeLocks, которые, кажется, не имеют никакого значения, а также startForeground (), который также, похоже, не работает.Я пытаюсь использовать AlarmManager, чтобы разбудить приложение через некоторое время, но это похоже на обходной путь.У кого-нибудь есть предложения?или есть что-то очевидное, что я пропустил?

спасибо за вашу помощь заранее.

1 Ответ

0 голосов
/ 07 января 2011

Насколько я собрал сервисы в Android, он должен оставаться подключенным бесконечно.

В общем, это неверно.

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

LogCat, вероятно, будет указывать, что ваш процесс завершен.

Я пытался использовать WakeLocks, которые, кажется, не имеют никакого значения

Поскольку телефон без него засыпает, WakeLock будет иметь важное значение для вашего приложения, по крайней мере, если вы находитесь в WiFi,Входящие пакеты через открытый 3G-сокет должны автоматически разбудить телефон, насколько я понимаю, но я не пробовал.

Однако телефон должен заснуть гораздо быстрее, чем «несколько часов», поэтому яЯ предполагаю, что вы не спите устройство другими способами (например, подключен к USB).

, а также startForeground (), который также, кажется, не работает

Теперь, когда должно быть достаточно, чтобы убить тебя, АФАИК.Компромисс - Notification, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...