Context 包含的内容,由来和作用

先看继承关系

image.png

可以看到我们熟悉的Application和Activity,Service都是继承或间接继承的ContextWrapper。差别就在Activity中间还有一层ContextThemeWrapper

Context的变量主要都是定义了一些常量。剩下的都是一些方法。下面会介绍一些.

ContextWrapper中只有一个成员变量就是 Context mBase,然后所有的抽象方法的实现都是调用mBase.相同方法名。意思就是什么都没做。暂时搞不明白这样实现的目的。

ContextImpl是Context具体的实现类。

看继承关系,我们知道了1个APP里面包含的Context个数:Activity个数+Service个数+1(Application)

Application的创建是在ActivityThread里面的Handler的HandbindApplication()创建,这里涉及到了APP启动流程,另外再分析

Activity也是在创建的时候通过ActivityThread的performLaunchActivity()方法调用的createBaseContextForActivity创建的。

Context部分作用:

   1.操作Theme:如setTheme(),getThemeResId(),getTheme(),initializeTheme();
   2.获取APP配置信息和资源信息相关:getPackageManager(),getResources(),getAssets(),getBasePackageName(),getPackageName(),getApplicationInfo(),getPackageResourcePath()等
   3.操作数据库
   4.操作文件
   5.操作SharedPreferences
   6.启动Activity:startActivity()等
   7.启动发送Broadcast:sendBroadcast()等
   8.绑定service:bindService()等
   9.注册Receiver:registerReceiver()等
   10.检查权限:checkPermission()等
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容