Android 使用上下文启动另一个活动

Android 使用上下文启动另一个活动,android,android-context,Android,Android Context,要开始一项活动,您需要一个意图,如: Intent i = new Intent(context, class) 因此,要填充上下文参数,有两个选项可用: 使用MyActivity.this或仅使用this 使用getApplicationContext() 使用getBaseContext() 我相信还有一两个选择。 这些选项都出现在某种教程中,一个使用第一个选项,另一个使用第三个选项 那么我应该用哪一个呢?这有关系吗?不同的情况有不同吗?你是这样做的 Intent intent = n

要开始一项活动,您需要一个意图,如:

Intent i = new Intent(context, class)
因此,要填充上下文参数,有两个选项可用:

  • 使用
    MyActivity.this
    或仅使用
    this
  • 使用
    getApplicationContext()
  • 使用
    getBaseContext()
我相信还有一两个选择。 这些选项都出现在某种教程中,一个使用第一个选项,另一个使用第三个选项


那么我应该用哪一个呢?这有关系吗?不同的情况有不同吗?

你是这样做的

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

他们肯定是不同的。这些是不同的上下文,应该使用尽可能少的范围(上下文)


例如,如果我们可以使用“活动”上下文而不是“应用程序上下文”,则应该使用“活动”上下文,这同样适用于“应用程序上下文”和“基础上下文”。

是,对于不同的情况,它是不同的

这取决于范围。假设您正在一个全局类中创建一个方法,该类扩展了
应用程序
以创建一个
Toast
,该方法用于
应用程序的每个类
,您可以使用
getApplicationContext()
来创建它

如果要创建仅限于该特定活动的视图,可以使用
Activity。此

另外,如果您想在一些内部类中创建一个AlertDialog,比如
AsyncTask
,那么您必须使用
活动。这是因为
AlertDialog
将链接到
活动本身

也不要使用
getBaseContext()
只需使用您正在使用的
Context
。欲了解更多信息,请参见

因此,真正问题的答案最好是使用
活动。这可以启动一个新的
活动

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

我猜OP知道SmartLemon:)请在回答之前阅读整个问题,而不仅仅是前几个词:)我确实阅读了整个问题,问题得到了回答,你使用了活动。如上所示。“那么我应该使用哪一个呢?这有关系吗?在不同的情况下是否有所不同?”这是真的,但不适用于
getBaseContext
getBaseContext
ContextWrapper
类的一种方法。开发人员无法确定哪一个上下文是用它包装的。这是有道理的,但我对这条格言的“为什么”很好奇。从另一个活动或应用程序上下文启动活动之间是否存在功能上的差异?