1):Context:是一个抽象类,该类定义了一个android应用(Application)全局的环境(或者场景)信息,sendBroadcast,startActivity,startService等方法都是此类的抽象方法。 2):ContextWrapper:继承于Context,同时在该类用有持有一个Context的引用mBase,充当起了Context的代理:该类由于继承自Context抽象类,所以需要重写Context的所有抽象方法,但真正实现该法操作的仍然是 mBase这个真正的角色。在该类中有两个地方对mBase进行了初始化,第一个地方就是ContextWrapper,第二个地方就是attachBaseContext方法。
public ContextWrapper(Context base) {
mBase = base;
}
protected void attachBaseContext(Context base) {
if (mBase != null) {
throw new IllegalStateException("Base context already set");
}
mBase = base;
}
3)ContextThemeWrapper:为ContextWrapper,该类扩展了ContextWrapper的功能,可以看做是一个Context,严格说来应该是Context的代理,在该类中持有一个Resource.Theme 类型的引用mTheme,用来设置Activity或者Application的主题。
4)android的组件之一Servcie:继承于ContextWrapper,也可以看做是Context的代理类或者就当它是一个Contex