Intent.setClass(this,className),第一個引數
阿新 • • 發佈:2019-01-01
問題: 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