Теперь то, что смущает, - это объявление разных контекстов и их специфическое использование. Чтобы упростить задачу, вы должны сосчитать два типа контекста, доступных в платформе Android.
Контекст приложения. Контекст приложения. Контекст приложения привязан к жизненному циклу приложения и всегда будет одинаковым на протяжении всего жизненного цикла приложения. Поэтому, если вы используете Toast, вы можете использовать контекст приложения или даже контекст активности (оба), потому что toast может быть вызван из любой точки вашего приложения и не привязан к окну.
Контекст действия привязан к жизненному циклу действия и может быть уничтожен, если активирована функция onDestroy (). Если вы хотите запустить новое действие, вам необходимо использовать контекст действия в его намерении, чтобы новое действие запуска было связано с текущим действием (в терминах стека действий). Однако вы также можете использовать контекст приложения для запуска нового действия, но затем вам нужно установить флаг Intent.FLAG_ACTIVITY_NEW_TASK, чтобы рассматривать его как новую задачу.
Теперь ссылаясь на ваши дела:
activitycontext: хотя он ссылается на ваш собственный класс, который расширяет класс Activity, но базовый класс (Activity) также расширяет класс Context, поэтому его можно использовать для предоставления контекста активности.
getApplication (), хотя и ссылается на объект Application, но класс Application расширяет класс Context, поэтому его можно использовать для предоставления контекста приложения.
getApplicationContext () предлагает контекст приложения.
getBaseContext () предлагает контекст активности.
Используйте контекст действия при использовании Intent, а для тоста вы можете использовать любой контекст.