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