Проблема с жизненным циклом Android - PullRequest
0 голосов
/ 21 апреля 2010

В моем приложении есть широковещательный приемник SMS со статическим логическим значением, чтобы активировать приемник или нет.

public class SmsListener extends BroadcastReceiver {

        public static boolean activated = false;


        @Override
        public void onReceive(Context context, Intent intent)
             if (activated){ //do something
              } 
         ...
      }
}

У меня есть виджет для активации или нет получателя смс (через это статическое значение). Все работает хорошо, но я только что заметил, что, если память телефона заканчивается, слушатель смс теряет свое состояние и приложение не работает, как ожидалось. Я думаю, это связано с жизненным циклом Android. У меня нет службы в фоновом режиме, и система убивает процесс. Следует ли избегать подхода, который я использовал? Должен ли я всегда запускать службу только для того, чтобы избежать уничтожения процесса Android?

Спасибо

Tobia Loschiavo

1 Ответ

0 голосов
/ 21 апреля 2010

Единственный надежный способ, которым я нашел глобалы, - это поместить их в сервис. Способ Android состоит в том, чтобы использовать onSaveInstanceState и затем восстанавливать состояние во всех различных методах, которые могут или не могут быть вызваны с этим состоянием. Даже это не совсем надежно, поэтому вы также можете записывать состояние в настройках в onPause и читать их в onResume.

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

...