android - статическая переменная убита, но активность выведена на передний план

Скажем, у меня есть 2 действия A и B. Я иду в B из A, затем нажимаю кнопку Home. в A. инициализируются несколько статических переменных

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

мой launchMode для обоих видов деятельности singleTop, не уверен, что это имеет значение, но я пытался singleTop, singleInstance а также standard никто из них не работает. Я предполагаю, что моим ожидаемым поведением будет точка входа всегда A или любая другая активность, если она не уничтожается и, конечно, статические переменные по-прежнему сохраняют ценность.

Спасибо!

3 ответа

Проблема может быть в том, что когда ваше приложение работает в фоновом режиме, ОС Android должна была очистить память, чтобы освободить ресурсы для другого приложения

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

  • Я надеюсь те static переменные имеют примитивные типы данных.
  • Даже если приложение работает в фоновом режиме, система Android через некоторое время убивает процесс.
  • Таким образом, вы можете сделать, это передать эти примитивные переменные через Intent в ActivityB,
  • Теперь, если приложение убито из фона и перенесено в Foreground, то же самое намерение используется для запуска ActivityB и вы все еще можете получить переданные переменные.

Передать переменную в ActivityB вместо статической переменной.

Intent intent = new Intent();
intent.putExtras("Id", 1);
intent.putExtras("Name", "kevz");
startActivity(intent, ActivityB.class);

Сейчас в ActivityB получить переданные значения переменных-

int Id = getIntent().getIntExtra("Id", -1); // -1 is default value.
String Name = getIntent().getStringExtra("Name", "unknown"); // unknown is default value
Другие вопросы по тегам