2013-08-05 6 views
0

У меня есть приложение для Android, которое должно быть активным в фоновом режиме все время. Я создал его как обычное приложение для Android. Он работает очень хорошо, однако иногда он останавливается сам по себе (или операционной системой Android) и должен повторно запускать его. Это не из-за возникшей ошибки, это потому, что это нормальное приложение.Приложение останавливается само по себе (или операционной системой Android)

Как мне сделать работу все время в фоновом режиме?

UPDATE:

приложение имеет графический интерфейс.

+2

Вы должны использовать Сервис – Geros

ответ

1

ОС Android может прекратить процесс в любой момент времени из-за ограничений памяти, вы можете узнать how Android manages memory here. Как сказал К.Каракури о начале службы, было бы гораздо меньше шансов на ее прекращение, еще одним плюсом для использования сервиса является то, что даже в том случае, если он будет убит, ОС попытается возродиться позднее, когда будут ограничены ограничения памяти:

Обратите внимание: это означает, что в большинстве случаев ваш сервис работает, он может быть убит системой, если он находится под сильным давлением памяти. Если это произойдет , система позже попытается перезапустить службу.

Подробнее об услугах можно узнать из Android dev site.

+0

может ли служба иметь графический интерфейс? –

+0

Нет, если у него есть GUI, это уже не услуга. Вы можете иметь Активность и Службу вместе, где Activity предоставляет графический интерфейс и услугу, предоставляя фоновые функции. Вы можете проверить этот вопрос [StackOverflow] (http://stackoverflow.com/questions/14695537/android-update-activity-ui-from-service) за идею о том, как перенаправлять изменения из Сервиса в Активность. – Kai

1

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

1

Предполагая, что вы используете Service. Если вы вернете START_STICKY из onStartCommand() услуг, то даже если андроид должен прекратить эту услугу, он будет перезапущен, как только ресурсы будут бесплатными.

+1

Может ли служба иметь графический интерфейс? –

+0

@MariusKavansky Служба не может напрямую отображать виды, подобные активности, но служба может отображать активные уведомления (в строке состояния), делая это, это делает работу переднего плана. –

+0

Мне нужно, чтобы это приложение имело графический интерфейс. –