美文网首页
Context分析

Context分析

作者: _喝喝酒吹吹风_ | 来源:发表于2020-10-09 13:12 被阅读0次

Context继承关系

context.png

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,会更贴合实际意义一些.

相关文章

网友评论

      本文标题:Context分析

      本文链接:https://www.haomeiwen.com/subject/colpyktx.html