Использование контекста для запуска другой операции

Чтобы начать действие, вам понадобится Intent, например:

Intent i = new Intent(context, class)

Итак, чтобы заполнить параметр контекста, доступно несколько вариантов:

  • Используйте MyActivity.this или просто this
  • Используйте getApplicationContext()
  • Используйте getBaseContext()

И я уверен, что есть еще один или два варианта. Эти параметры отображаются в каком-то учебнике, в котором используется первый, а третий - третий.

И какой из них я должен использовать? Это даже имеет значение? Различие в разных случаях?

Ответы

Ответ 1

Да, он отличается для разных случаев,

Это зависит от области действия. Предположим, если вы создаете метод в глобальном классе, который extends Application для создания Toast, который используется в каждом классе вашего Application, вы можете использовать getApplicationContext() для его создания.

Если вы хотите создать представление, ограниченное этим конкретным действием, вы можете использовать Activity.this

Также, если вы хотите создать AlertDialog в некотором внутреннем классе, скажите AsyncTask, тогда вы должны использовать Activity.this, потому что AlertDialog должен быть связан с Activity.

Также не используйте getBaseContext(), просто используйте Context, который у вас есть. Для получения дополнительной информации для нее вы можете увидеть this Answer.

Итак, ответ на реальный вопрос лучше использовать Activity.this для запуска нового Activity.

Intent intent = new Intent(Current_Activity.this, Calling.class);
startActivity(intent);

Ответ 2

Они разные. Это разные контексты и должны использоваться с наименьшей возможной областью (контекстом).

Например, если мы можем использовать Контекст активности вместо ApplicationContext, следует использовать контекст активности, то же самое относится к контексту приложения и базовому контексту.

Ответ 3

Вы делаете это так...

Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);