Возможно ли значение null для окончательной переменной stati c, когда Android недостаточно памяти? - PullRequest
0 голосов
/ 08 января 2020

Я прочитал, что, когда Android недостаточно памяти, это убьет активность, которая находится в фоновом режиме.

При возврате в приложение, Android восстановится из самого верхнего стека, поэтому, когда Активность, которая называется «другая убитая» Активность, имеющая «stati c», она может вернуть ноль, поскольку она еще не восстановлена.

Вопрос: как насчет stati c final variable? Насколько я понимаю, поскольку он окончательный, он не будет обнуляться Android и сохранять его значение, даже когда Android убил активность, удерживающую его.

Вариант использования: fyi:

Занятие A:

private static final String EXTRA_KEY = "key"

void goToB(){
    Intent intent = new Intent(this, B.class);
    intent.putExtra(EXTRA_KEY,"value");
}

Занятие B:

void getExtra(){
   getIntent.getExtras(A.EXTRA_KEY);
}

Если я нахожусь в Занятии B, поместите приложения в фоновый режим и Android убейте действия из-за памяти, Возможно ли, что A.EXTRA_KEY будет нулевым?

Также рекомендуется ли использовать EXTRA_KEY в качестве константы? Спасибо

1 Ответ

0 голосов
/ 08 января 2020

Stati c переменные связаны с классом. И классы редко получают сборщик мусора , вот хороший ответ . Обычно в android переменные stati c избегаются из-за проблем со ссылками, которые он может создать.

Вот альтернатива для сохранения постоянных значений, таких как ключи, URL-адреса и т. Д. c

В файле приложения вашего приложения

buildTypes {
    debug {
        buildConfigField "String", "EXTRA_KEY ", "\"key\""
    }
}

получите его таким образом

BuildConfig.EXTRA_KEY 
...