Очистка переменных в onDestroy() службы, но не при перезапуске службы Android

Я работаю над приложением, в котором я останавливаю и перезапускаю службу в своем коде. В функции onDestroy службы я очищаю некоторые переменные из хранилища Android с помощью SharedPreferences. Однако я не хочу, чтобы эта очистка выполнялась, когда Android самостоятельно перезапускает эту службу (один из таких случаев — когда я удаляю активность из последних приложений). В таком случае я хотел бы продолжить с текущими переменными.

Есть ли способ выяснить, что именно вызвало вызов функции onDestroy (было ли это сделано Android или по какой-то другой причине). У меня также есть предчувствие, что дизайн моего кода не так хорош, я имею в виду, что он должен быть достаточно общим, чтобы не прибегать к такому выполнению на основе прецедентов. Поэтому, если у кого-то есть альтернативный дизайн для такой вещи, он был бы очень признателен. Спасибо!


person Karan    schedule 28.05.2014    source источник
comment
Однако я не хочу, чтобы эта очистка выполнялась, когда Android самостоятельно перезапускает эту службу (один из таких случаев — когда я удаляю активность из последних приложений). В таком случае я хотел бы продолжить с текущими переменными. -- в таком случае ваш процесс будет завершен, и, следовательно, у вас больше не будет текущих переменных. если у кого-то есть альтернативный способ сделать это — просто не делайте этого. Или, по крайней мере, объясните, почему вы считаете, что вам это нужно.   -  person CommonsWare    schedule 28.05.2014
comment
Извините, я должен был уточнить. Под текущими переменными я подразумевал данные, которые я сохранил с помощью SharedPreferences. Он хранится в хранилище Android и доступен даже после того, как служба или действие были уничтожены. Думаю, я отредактирую вопрос, чтобы избежать путаницы.   -  person Karan    schedule 28.05.2014


Ответы (1)


Ну, я чувствую себя глупо. Оказывается, функция onDestroy не вызывается всякий раз, когда Android перезапускает службу, она вызывается только тогда, когда служба явно перезапускается/останавливается.

person Karan    schedule 28.05.2014
comment
Нет, onDestroy вызывается системой, чтобы уведомить службу о том, что она больше не используется и удаляется. - person Marian Paździoch; 25.02.2015