2015-02-23 2 views
1

Нормально ли, что служба уничтожается, когда приложение помещается в фоновый режим (нажата кнопка «домой»)? Если это так, могу ли я переопределить его, комментируя функцию onDestroy(), чтобы служба не была уничтожена? Это хорошая практика для этого.OnDestroy() Вызывается для службы, когда приложение переходит на задний план

+0

показать ваш код. Служба не будет уничтожена в таком сценарии –

+0

Начните использовать в качестве переднего плана http://stackoverflow.com/questions/24839655/how-to-use-startforeground/24839801#24839801 –

+0

его огромный код, поэтому это не стандартная команда, которая выполняется, когда приложение переходит на задний план? –

ответ

1

Комментарий к методу onDestroy() не повлияет на это поведение; класс Service сохраняет свой жизненный цикл как described here.

Чтобы сохранить Service, работающий в фоновом режиме, наиболее распространенный подход - использовать постоянное уведомление. Это по дизайну; Android не хочет, чтобы службы, работающие в фоновом режиме, не указали пользователю, что они выполняют какую-либо деятельность и могут разряжать аккумулятор и использовать системные ресурсы.

Это делается путем вызова startForeground() из Сервиса и передачи уведомлений, которые будут показаны пользователю. More on this here.

В дополнение к этому, другой подход заключается в изменении возвращаемого значения от onStartCommand() в вашем Сервисе, чтобы предложить «Android», чтобы ваша Служба не была убита или перезапущена, если она была убита; однако это не гарантирует, что ваша Служба будет работать в ситуациях с низкой памятью. More on this here.

Также приятно спросить: что вы делаете, для чего требуется, чтобы Служба выполнялась постоянно в фоновом режиме? Часто есть более эффективные способы решения таких задач.

+0

Благодарим вас за отзыв, im вызов в службе, загружающей данные из Интернета, и пользователь должен быть уведомлен о поступлении новых данных ... точно так же, как приложение для обмена сообщениями –

+0

Вы посмотрели на использование служба, например Google Cloud Messaging (https://developer.android.com/google/gcm/index.html)? Это отличный способ, позволяющий приложению получать уведомления о появлении новых данных, не постоянно обслуживая ресурсоемкую службу. Очень рекомендую посмотреть на такой подход. – dcarr622

+0

сделаю это спасибо. –

Смежные вопросы