问题: Intent.setClass(Context packageContext, Class<?> cls),中第一个参数是那个Context。(调用方,被调用方?)
假设结构如下
包:com.package1----》Activity1,Activity2
包:com.package2----》ActivityA,ActivityB
误解:认为Context是调用方,以前一直在一个包中调用如,package1包中,Activity1调用Activity2,Intent.setClass(this,Activit2)这样不出问题的。
可是如果跨包掉,在Activity1中调用ActivityA,就出现错位了。
结论:Context是被调用方的,源码中是Intent.setClass(context,class)调用ComponentName(context,class)
public ComponentName(Context pkg, Class<?> cls) {
mPackage = pkg.getPackageName();
mClass = cls.getName();
}可以看出Context得到包名,class得到类名,来唯一确定Activity