当我开发Android应用程序时,我喜欢查看内部SDK实现。这是一个庞大的框架,如果您了解内部方法的实现方式,则有时会对您有所帮助。
现在我做的最后一个源代码检查真的让我感到困惑。我查看Context类以阅读一些实现。不幸的是,它们中的大多数都是抽象的,这就是为什么Android发明了ContextWrapper(一个简单的适配器模式)。
问题在于,我找不到我感兴趣的某些方法。以getResources作为例子。我有一个Context对象,并在其上调用getResources。这个Context是Activity的一个实例(它本身没有实现getResources())。
同样对于ContextThemeWrapper,它是Activity的直接父类。然后,ContextWrapper在其Context成员上调用getResources()。但是那时谁在实现它呢?
编辑:添加了来自ContextWrapper的代码片段。
所以问题也可以是“哪个Context被传递给实现所需方法的ContextWrapper”。
现在我做的最后一个源代码检查真的让我感到困惑。我查看Context类以阅读一些实现。不幸的是,它们中的大多数都是抽象的,这就是为什么Android发明了ContextWrapper(一个简单的适配器模式)。
问题在于,我找不到我感兴趣的某些方法。以getResources作为例子。我有一个Context对象,并在其上调用getResources。这个Context是Activity的一个实例(它本身没有实现getResources())。
同样对于ContextThemeWrapper,它是Activity的直接父类。然后,ContextWrapper在其Context成员上调用getResources()。但是那时谁在实现它呢?
编辑:添加了来自ContextWrapper的代码片段。
public class ContextWrapper{
Context mContext
public ContextWrapper(Context ctx){
mContext = ctx
}
public Resourced getResources(){
return mContext.getResources()
}
//... all other Methods are implementing the same AdapterPattern
}
所以问题也可以是“哪个Context被传递给实现所需方法的ContextWrapper”。