3

Моей служба, как правило, начатой ​​BroadcastReceiver для RECEIVE_BOOT_COMPLETED, и реализуются с флагом START_STICKY следующим образом:Сделать независим от деятельности

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return Service.START_STICKY; 
} 

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

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

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

+0

Вы, вероятно, можно использовать 'Service # onDestroy' осуществлять очистку, и сохранить информацию, которую Вы иначе потеряли бы. См.: Http://developer.android.com/reference/android/app/Service.html#onDestroy() – blad

+0

"затем уничтожает действие (путем прекращения приложения)" .. пользователь не может и не разрушает действие, ни прекратить приложение. Все, что он может сделать, это закончить активность. Android вызовет onPause(), возможно, onStop() и, возможно, Activity.onDestroy() в какой-то момент в будущем. Но если ваша служба запущена, приложение не будет прекращено. – rupps

+0

@rupps: «пользователь не может и не разрушает действие» - нажатие BACK по умолчанию уничтожает действие. «ни прекратить приложение» - моя интерпретация этого заключается в том, что OP означает «завершить процесс», например, через список недавних задач. – CommonsWare

ответ

2

Нет способа убедиться, что служба (или любой компонент приложения) не будет убита. Если у вас есть данные, которые необходимо сохранить, вы можете использовать любой из этих методов.

http://developer.android.com/guide/topics/data/data-storage.html

SharedPerferences довольно проста в использовании.

Вот раздел в документе разработчика (и ссылке), в котором объясняется, как приложения запускаются и останавливаются системой.

По умолчанию каждое приложение работает в своем личном процессе. Android запускает процесс, когда какой-либо компонент приложения должен быть выполнен, затем выключает процесс, когда он больше не нужен или когда система должна восстановить память для других приложений.

http://developer.android.com/guide/components/fundamentals.html

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