2012-02-24 2 views
30

Я разрабатываю приложение, в котором я запускаю службу, если пользовательская функция включена (в моем приложении). Я хочу продолжать эту службу даже после выхода из приложения. Как я могу это сделать? плз помочьКак сохранить работу службы в фоновом режиме даже после выхода пользователя из приложения?

+1

Не выключайте службу, когда пользователь выходит из приложения? Запуск в фоновом режиме без активности переднего плана - это то, что предназначены для служб. Можете ли вы уточнить, какова ваша проблема? – DeeV

ответ

20

справа от developer.android.com

Служба является компонентом, который работает в фоновом режиме, чтобы выполнить длительные операции или выполнять работу для удаленных процессов. Служба не предоставляет пользовательский интерфейс. Например, услуга может воспроизводить музыку в фоновом режиме, в то время как пользователь находится в другом приложении или может получать данные по сети без блокировки взаимодействия пользователя с активностью . Другой компонент, такой как операция , может запустить службу и позволить ей запускать или связываться с ней в порядке, чтобы взаимодействовать с ним. Служба реализуется как подкласс Сервиса , и вы можете узнать больше об этом в руководстве разработчика.

Таким образом, до тех пор, пока вы создаете сервис, и пользователь выходит из вашего приложения, он все равно будет работать. Как и в примере выше.

Это должно дать вам всю необходимую информацию: https://developer.android.com/guide/components/services.html

+7

Это не будет продолжаться, если диспетчер задач, который довольно часто встречается на телефонах, убивает службу. OnStartCommand (...) в сервисе должен вернуть START_STICKY – user1406716

+1

Да, START_STICKY заново создаст службу, если она будет убита. – EGHDK

+0

@EGHDK Как это реализовано? – Sauron

6

вы можете использовать менеджер Alarm для любого фонового сервиса.

Для определенного времени вы хотите выполнить что-то, что может быть полезным.

И для продолжения процесса вы можете запустить сервис из диспетчера аварийных сигналов.

4

Один из андроида предложил способ:

Запущенный сервис может использовать startForeground(int, Notification). API, чтобы поставить службу в состояние переднего плана, где система считает, что это то, что пользователь активно осознает и, следовательно, не является кандидатом на убийство при низком уровне памяти. (Это еще теоретически возможно сервис будет убит под сильным давлением памяти от текущего переднего плана приложения, но на практике это не должно быть проблемой.)

Другой способ перезапуска службы, когда его остановили (Система будет вызывать onDestroy() при остановленном сервисе)

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