Каков лучший способ получить контекст?

В соответствии с этим ответом или в документации по Android есть несколько способов получить контекст в приложении и передать его другому классу/методу/whatuneed.

Скажем, что я участвую в Foo Activity и вам нужно передать контекст в конструктор Bar.

Bar bar  = new Bar(Foo.this);
Bar bar2 = new Bar(this); //same as first i guess
Bar bar3 = new Bar(getApplicationContext());
Bar bar4 = new Bar(getBaseContext());
Bar bar5 = new Bar(MyApp.getContext); // get context statically 

Принимая во внимание утечку памяти, скорость, общую производительность, что будет лучшим способом между всеми этими возможностями?

Ответ 1

Вы должны проверить этот вопрос - который в основном охватывает те же, что и ваши.

Также Документы разработчика Предотвращение утечек памяти дает вам достойное объяснение некоторых ситуаций, в которых разумно использовать различные методы.

Ответ 4

Возможно, вы захотите использовать это. Это контекст вашей текущей деятельности (которая является контекстом) и имеет самый короткий жизненный цикл. Но имейте в виду утечку памяти, которая может произойти. http://developer.android.com/resources/articles/avoiding-memory-leaks.html

Ответ 5

У меня нет прямого ответа на ваш вопрос. Но если вы сравните Foo.this, и тогда лучше использовать первый, как иногда (в случае вложенного класса), второй покажет ошибку.

Для более подробной информации об этом пройдите по этой ссылке

Использование контекста приложения везде?.

Надеюсь, это поможет вам.