Context以及ContextWrapper

如有错误或遗漏,敬请指正!

在Android应用开发中,Context是一个非常重要的类,它是一个抽象类,是关于一个应用环境的描述的接口,Context的实例在应用程序被启动时由Android系统提供。

由于Context是一个抽象类,所以Android系统为我们提供了ContextWrapper。在ContextWrapper类中,除了构造器ContextWrapper(Context base)、方法ContextWrapper.attchBaseContext(Context base)、ContextWrapper.getBaseContext()外,其它方法基本上都是对Context的方法再包装。

构造器ContextWrapper(Context base)
该构造器可以用来初始化ContextWrapper实例,并设置一个Context实例到ContextWrapper中。

方法ContextWrapper.attchBaseContext(Context base)
该方法用于设置Context实例。该方法的实现是,如果ContextWrapper实例中已经持有Context的实例,那么就会抛出异常;否则就接收并持有Context实例。

方法ContextWrapper.getBaseContext()
该用法用于获取被设置的Context的实例。

ContextWrapper是Android众多应用组件的直接父类,例如ContextThemeWrapper、Application、Service等。在这些子类的构造器中都是向ContextWrapper的构造器中传递了null值,由此可见,系统都是调用ContextWrapper.attchBaseContext(Context base)方法来设置Context实例的,因此该方法在使用ContextWrapper的子类时会占有重要的地位,甚至可以被视作这些子类的生命周期的开始。

你可能感兴趣的:(Android笔记)