1. 程式人生 > >Intent.setClass(this,className),第一個引數

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