Я думаю, что есть много вещей, которые плохо документированы на сайте SDK, это один из них. Я утверждаю, что кажется, что по умолчанию лучше использовать контекст приложения и использовать контекст активности только тогда, когда это действительно необходимо. Единственное место, где я когда-либо видел, что вам нужен контекст активности, - это диалог прогресса. SBERG412 утверждает, что вы должны использовать контекст активности для всплывающего сообщения, однако в документах Android четко показан используемый контекст приложения. Я всегда использовал контекст приложения для тостов из-за этого примера Google. Если это неправильно, Google бросил мяч здесь.
Вот еще, чтобы подумать и рассмотреть:
Для сообщения о тостах руководство по разработке Google использует контекст приложения и прямо говорит, что нужно его использовать: Уведомления о тостах
В разделе диалогов руководства по разработке вы видите, что AlertDialog.Builder использует контекст приложения, а затем индикатор выполнения использует контекст действия. Это не объясняется Google.
Диалоги
Кажется, что хорошая причина использовать контекст приложения - это когда вы хотите обрабатывать изменения конфигурации, например, изменение ориентации, и вы хотите сохранить объекты, которым нужен контекст, такой как Views. Если вы посмотрите здесь: Изменения во время выполнения
Существует осторожность при использовании контекста активности, который может вызвать утечку. Этого можно избежать с помощью контекста приложения с представлениями, которые должны быть сохранены (по крайней мере, это мое понимание). В приложении, которое я пишу, я намерен использовать контекст приложения, потому что я пытаюсь удерживать некоторые представления и другие вещи при изменении ориентации, и я все еще хочу, чтобы действие было уничтожено и воссоздано при изменении ориентации. Таким образом, я должен использовать контекст приложения, чтобы не вызвать утечку памяти (см. Предотвращение утечек памяти). Мне кажется, что есть много веских причин использовать контекст приложения вместо контекста активности, и мне кажется, что вы будете использовать его чаще, чем контекст активности. Это то, что многие книги по Android, которые я просмотрел, похоже, делают, и это то, что делают многие примеры Google, которые я видел.
Документация Google действительно создает впечатление, что использование контекста приложения в большинстве случаев прекрасно, и на самом деле это происходит чаще, чем использование контекста активности в их примерах (по крайней мере, в тех примерах, которые я видел). Если использование контекста приложения на самом деле является такой проблемой, то Google действительно нужно уделять больше внимания этому. Им нужно прояснить это, и они должны переделать некоторые из своих примеров. Я бы не стал винить в этом неопытных разработчиков, поскольку авторитет (Google) действительно заставляет его выглядеть так, будто это не проблема использовать контексты приложения.