2016-07-31 5 views
0

В моем приложении я использую фоновое обслуживание для получения некоторых фоновых данных. Я запускаю услугу, используяДеятельность и услуги связующего

bindService(intent, mConnection, Context.BIND_AUTO_CREATE); 

mConnection является экземпляром ServiceConnection.

В службе я продолжаю получать некоторые данные и проверять их, и если проверка проходит, я воспроизвожу звук. Поэтому, когда это происходит, пользователь может нажать кнопку STOP на экране активности. Это вызовет unbind (mConnection), который уничтожит услугу, в которой я останавливаю звук. Мой запрос заключается в том, что пока служба работает в фоновом режиме, а пока что Android убивает активность, то как пользователь сможет остановить службу. Мне нужно mConnection для развязывания службы, и я не могу хранить mConnection в Bundle в onSaveInstanceState.

+0

Не было бы лучше использовать IntentService и широковещательный приемник (startService call), а не связанную службу, поскольку это только конкретная фоновая задача, которую вы хотите сделать, а не множество разных задач? –

+0

Привет, Марк, я хочу поддерживать пользовательский интерфейс активности, чтобы, если пользователь хочет остановить фоновое обслуживание между ними, он может сделать это с помощью кнопки STOP. IntentService, после запуска, не будет находиться под контролем пользователя. – Mandroid

+0

Почему бы не использовать Executor/Threadpool/Runnable/в службе, таким образом вы все равно можете управлять, отправив команду shutdownNow() в Executor - таким образом, служба не привязана к жизненному циклу Activity, и вы можете поддерживать управление исполняющей нитью в службе. –

ответ

1

Если вы запустите сервис с использованием метода bindService (...), то, когда действие будет убито системой, значит, служба. Его жизненный цикл связан с деятельностью. Кстати, система убьет процесс, а не только активность. Это происходит при запуске служб с помощью startService() и START_STICKY.

В вашем случае вам не о чем беспокоиться. Пока активность прекращается, ваш сервис тоже.

+0

Моя цель состоит в том, что активность продолжает работать, даже если родительская активность убита Android, и если пользователь пересматривает действие, то он восстанавливается в том же состоянии пользовательского интерфейса, что и раньше. Это выполнимо? – Mandroid