В моем приложении я использую фоновое обслуживание для получения некоторых фоновых данных. Я запускаю услугу, используяДеятельность и услуги связующего
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
mConnection является экземпляром ServiceConnection.
В службе я продолжаю получать некоторые данные и проверять их, и если проверка проходит, я воспроизвожу звук. Поэтому, когда это происходит, пользователь может нажать кнопку STOP на экране активности. Это вызовет unbind (mConnection), который уничтожит услугу, в которой я останавливаю звук. Мой запрос заключается в том, что пока служба работает в фоновом режиме, а пока что Android убивает активность, то как пользователь сможет остановить службу. Мне нужно mConnection для развязывания службы, и я не могу хранить mConnection в Bundle в onSaveInstanceState.
Не было бы лучше использовать IntentService и широковещательный приемник (startService call), а не связанную службу, поскольку это только конкретная фоновая задача, которую вы хотите сделать, а не множество разных задач? –
Привет, Марк, я хочу поддерживать пользовательский интерфейс активности, чтобы, если пользователь хочет остановить фоновое обслуживание между ними, он может сделать это с помощью кнопки STOP. IntentService, после запуска, не будет находиться под контролем пользователя. – Mandroid
Почему бы не использовать Executor/Threadpool/Runnable/в службе, таким образом вы все равно можете управлять, отправив команду shutdownNow() в Executor - таким образом, служба не привязана к жизненному циклу Activity, и вы можете поддерживать управление исполняющей нитью в службе. –