У меня есть статический Предпочтительный класс, которые содержат некоторые установки приложения и материал как этот. Это в порядке для хранения ссылки на ApplicationContext там? Мне нужна та ссылка, таким образом, я могу получить папку кэша и наполнить как этот в классах, которые не наследовали Действие.
Вы правы, используя ApplicationContext
там, поскольку, если вы этого не сделаете, t это может вызвать значительные утечки памяти .
Однако проблема заключается в том, что статическая переменная
может не сохранять свое значение. Из-за того, как Android обрабатывает приложения, возможно, что ваше приложение может быть убито, а затем перезапущено - обычно из-за переключения пользователя на другие приложения - таким образом, что ваша статическая переменная
станет нулевой, а ваша код, который устанавливает его, запускаться не будет. Посмотрите этот вопрос, чтобы получить более подробный ответ .
Эту проблему можно обойти, но проверка всех возможностей, которые могут привести к тому, что ваша переменная окажется нулевой
, займет много времени и может привести к ошибкам. Итак, в моих статических классах предпочтений я сделал любой из методов, которые требуют, чтобы Контекст
принимал его как аргумент. Например:
static int getSomeIntegerPreference(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getInt(PREFERENCE_SOME_INTEGER, 0);
}
Это некрасиво, но работает.