Изчистване на променливи в 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