什么是ClassName.this和Context Class之间的关系?

时间:2014-08-14 16:27:58

标签: java android

我正在学习Android ComponentName,Android书的例子是:

ComponentName componentName = new ComponentName(
            ComponentAttrActivity.this, SecondActivity.class);

它用于通过第一个活动创建第二个活动,我对第一个参数感到困惑:ComponentAttrActivity.this。我查看了StackOverflow,大多数答案是关于为什么ClassName.this不仅this,而且我想知道的是Class.thisContext的类型之间的关系是什么,我假设上面的ComponentName构造函数适合

下面的第3个构造函数

它有3个2参数构造函数:

ComponentName(String pkg, String cls)
ComponentName(Context pkg, String cls)
ComponentName(Context pkg, Class<?> cls)

我查看了Android API的Context,仍然没有线索......

  

有关应用程序环境的全局信息的接口。这个   是一个抽象类,其实现由Android提供   系统。它允许访问特定于应用程序的资源和   类,以及应用程序级操作的上调,如   发起活动,广播和接收意图等。

有人可以帮我解释一下吗?

1 个答案:

答案 0 :(得分:1)

ClassName.this让内部类引用其封闭类的实例。在您的情况下,它是一个类的实例,它是Context的子类(例如,ActivityContext的子类,因此任何子类也是Activity的类,因此可以作为Context参数传递。

如果对new ComponentName(ComponentAttrActivity.this, SecondActivity.class);的构造函数调用未包含在内部类的代码中,则可以改为使用new ComponentName(this, SecondActivity.class);