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