Дифференциальные правила использования Android getBaseContext, getApplicationContext или использование Activity "this"

Я много раз задавал этот вопрос и нашел много разных рекомендаций о том, когда использовать getBaseContext, getApplicationContext или собственный этот указатель.

Три правила, которые часто возникают и, похоже, имеют большой смысл, -

  • Для долговременной ссылки на контекстная деятельность getApplicationContext следует использовать поскольку это существует до тех пор, пока приложение существует
  • Для контекстов, жизненные циклы которых связанные с их деятельностью, свои контекст активности (this) должен быть б
  • Сохранять контекстные указатели статически только с большой осторожностью (и, если возможно, совсем нет)

Предполагая, что это правильно, что такое использование getBaseContext?

Я видел много примеров, когда новые намерения создаются с помощью -

Intent intent = new Intent(getBaseContext(), myClass.class);

В отличие от -

Intent intent = new Intent(this, myClass.class);

Каков правильный или рекомендуемый метод и почему?

+41
источник поделиться
1 ответ

Метод getBaseContext() - это метод ContextWrapper. ContextWrapper - "Проксирование реализации контекста, который просто делегирует все свои вызовы другому Контексту. Может быть подклассифицирован для изменения поведения без изменения исходного контекста". (согласно javadocs)

Таким образом, это используется для делегирования вызовов в другой контекст.

+13
источник

Посмотрите другие вопросы по меткам или Задайте вопрос