先看继承关系

可以看到我们熟悉的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()等
网友评论