Intent.setClass(this,className),第一个参数

问题: 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

你可能感兴趣的:(Android)