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

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


person Saurabh Agrawal    schedule 24.02.2012    source источник
comment
Не отключать службу, когда пользователь выходит из приложения? Запуск в фоновом режиме без активности переднего плана — это то, для чего предназначены Службы. Можете ли вы уточнить, в чем именно заключается ваша проблема?   -  person DeeV    schedule 24.02.2012


Ответы (3)


Прямо с сайта developer.android.com

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

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

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

person EGHDK    schedule 24.02.2012
comment
Это не будет поддерживать работу службы, если диспетчер задач, который сейчас довольно распространен на телефонах, убьет службу. Команда onStartCommand(...) в службе должна возвращать START_STICKY - person user1406716; 13.03.2014
comment
Да, START_STICKY повторно создаст службу, если она будет убита. - person EGHDK; 24.03.2014
comment
@EGHDK Как это реализовано? - person Sauron; 03.04.2015
comment
я создал построитель уведомлений в своем сервисе, и он работает только тогда, когда мое приложение открыто. Мне интересно, следует ли мне позвонить onCreate() в мою службу? - person Kairi San; 19.02.2016
comment
Самый простой способ, которым я работал при использовании музыкального проигрывателя, - запустить службу как startForeground(notificationId, уведомление); Когда вы хотите остановить это, просто вызовите stopForeground(true); - person Ankush Joshi; 07.01.2017

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

В определенное время вы хотите выполнить что-то, что может быть услугой.

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

person Bhavesh Hirpara    schedule 24.02.2012

Один из предложенных способов Android:

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

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

person AndyW    schedule 31.01.2013