我正在学习Android ComponentName
,Android书的例子是:
ComponentName componentName = new ComponentName(
ComponentAttrActivity.this, SecondActivity.class);
它用于通过第一个活动创建第二个活动,我对第一个参数感到困惑:ComponentAttrActivity.this
。我查看了StackOverflow,大多数答案是关于为什么ClassName.this
不仅this
,而且我想知道的是Class.this
与Context
的类型之间的关系是什么,我假设上面的ComponentName构造函数适合
它有3个2参数构造函数:
ComponentName(String pkg, String cls)
ComponentName(Context pkg, String cls)
ComponentName(Context pkg, Class<?> cls)
我查看了Android API的Context
,仍然没有线索......
有关应用程序环境的全局信息的接口。这个 是一个抽象类,其实现由Android提供 系统。它允许访问特定于应用程序的资源和 类,以及应用程序级操作的上调,如 发起活动,广播和接收意图等。
有人可以帮我解释一下吗?
答案 0 :(得分:1)
ClassName.this
让内部类引用其封闭类的实例。在您的情况下,它是一个类的实例,它是Context
的子类(例如,Activity
是Context
的子类,因此任何子类也是Activity
的类,因此可以作为Context
参数传递。
如果对new ComponentName(ComponentAttrActivity.this, SecondActivity.class);
的构造函数调用未包含在内部类的代码中,则可以改为使用new ComponentName(this, SecondActivity.class);
。