Context简介
Context是是一个应用程序环境信息的接口
开发中使用Context的场景一般分为两类。
- 调用Context的方法,比如启动Activity、访问资源、调用系统服务等
- 调用方法时传入Context,比如Toast,创建Dialog等
Activity、Service、Application间接继承Context,一个应用程序有多少个Context,就是Activity和Service的数量加1,1就是Application。
看一下Context的继承关系图:
ContextWrapper中有一个mBase,它是指向ContextImpl的。这里用的是装饰者模式,ContextWrapper的方法基本都是调用ContextImpl中的方法。
ContextThemeWrapper在ContextWrapper的基础上增加了主题相关的内容,因为Activity需要主题,所以继承了ContextThemeWrapper。而不需要主题的Service、Application继承了ContextWrapper。
ContextImpl和ContextWrapper这里是通过组合的方式来实现的,这样更佳灵活。
关于Context的创建可以参考前面Activity、Service启动的文章。