Context继承关系

Context的作用
- 四大组件的交互,包括启动 Activity、Broadcast、Service,获取 ContentResolver 等
- 获取系统/应用资源,包括 AssetManager、PackageManager、Resources、System Service 以及 color、string、drawable 等
- 文件,包括获取缓存文件夹、删除文件、SharedPreference 相关等
- 数据库(SQLite)相关,包括打开数据库、删除数据库、获取数据库路径等
- 其它辅助功能,比如设置 ComponentCallbacks,即监听配置信息改变、内存不足等事件的发生
为什么Activity需要继承自ContextThemeWrapper,而Service和Application直接继承自ContextWrapper呢?
ContextThemeWrapper类,从它的命名就可以看出,其内部包含了与Theme相关的接口,当然,只有Activity才需要主题,Service和Application是不需要主题的,因为Service是没有界面的后台场景,所以Service和Application直接继承于ContextWrapper
Activity的this和getBaseContext()有什么区别?
Activity就是继承Context的,所以this是返回Activity自己;
getBaseContext()返回的是ContextWrapper里面的mBase(不包含Theme相关的功能);
代理关系
我们很多人往往把Activity理解成它继承了Context,是的没错,它确实继承自Context,但我认为,把Activity理解成它代理了Context,会更贴合实际意义一些.
网友评论