Android - хранение ссылок на ApplicationContext

У меня есть статический Предпочтительный класс, которые содержат некоторые установки приложения и материал как этот. Это в порядке для хранения ссылки на ApplicationContext там? Мне нужна та ссылка, таким образом, я могу получить папку кэша и наполнить как этот в классах, которые не наследовали Действие.

5
задан nixa 20 April 2010 в 08:02
поделиться

1 ответ

Вы правы, используя ApplicationContext там, поскольку, если вы этого не сделаете, t это может вызвать значительные утечки памяти .

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

Эту проблему можно обойти, но проверка всех возможностей, которые могут привести к тому, что ваша переменная окажется нулевой , займет много времени и может привести к ошибкам. Итак, в моих статических классах предпочтений я сделал любой из методов, которые требуют, чтобы Контекст принимал его как аргумент. Например:

static int getSomeIntegerPreference(Context context) {
    return PreferenceManager.getDefaultSharedPreferences(context).getInt(PREFERENCE_SOME_INTEGER, 0);   
}

Это некрасиво, но работает.

6
ответ дан 14 December 2019 в 13:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: