Дифференциальные правила использования getBaseContext для Android, getApplicationContext или использования «этого»



android-context (1)

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

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

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

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

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

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

В отличие от -

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

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


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

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





android-context