博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Android内核剖析》读书笔记 第7章 理解Context
阅读量:6875 次
发布时间:2019-06-26

本文共 887 字,大约阅读时间需要 2 分钟。

Context在我们实际开发中被广泛用到,比如 startActivity(…)/getResources()/getSharedPreferences(…)/getSystemService(.)等等;书中把Context理解为一个应用场景,一个Activity实例就是一个应用场景,一个Service实例也是一种应用场景,只是他木有前台界面而已;与Context相关类的继承关系如下:

  1. Context只是一个抽象类,具体的逻辑实现全部都由ContextImpl完成;ContextImpl实例的创建几乎都是在ActivityThread中完成的,比如 handleBindApplication(…)/ createBaseContextForActivity(…)/handleCreateService(…)分别对应加载APK应用、加载Activity、加载Service;
  2. ContextWrapper只是一个包装类,同样木有做任何具体的事情,他只是简单的将请求转发给ContextImpl实例完成具体的逻辑执行;
  3. ContextThemeWrapper内部新增了对主题Theme相关的支持,其主题可以在AndroidManifest.xml中通过android:theme标签为Application、Activity元素指定;
  4. Activity对应的前台界面,所以需要使用到主题,而后台的Service没有界面,不需要主题,所以直接继承ContextWrapper;
  5. Application对象是在应用程序第一次启动时最先创建的对象,每个应用有且只有一个Application对象,代表的是一个广义的应用场景,他也与界面无关,所以也直接继承ContextWrapper;开发者可以继承该类实现更多的业务逻辑,比如加入随系统启动时需要加载的资源或服务等;

系统中一共有多少个Context呢?

从上面的描述就可以看出啦,Context个数 = 1个Application + N个Activity + N个Service;

以上内容若有转载,请注明出处,欢迎访问

 

你可能感兴趣的文章
第十二天-《企业应用架构模式》-对象-关系结构模式
查看>>
这40款优质APP大合集,总有一个适合你!
查看>>
从理论到实践 全面理解HTTP/2
查看>>
JavaScript五十问——对比来说CSS的Grid与FlexBox(上篇)
查看>>
使用音频转换器怎么转换电影的格式?
查看>>
35. Search Insert Position
查看>>
webpack—url-loader 解决项目中图片打包路径问题
查看>>
thinkphp源码分析(四)—错误及异常处理篇
查看>>
Vue实现类似Spring官网图片滑动效果
查看>>
前嗅ForeSpider教程:数据浏览与可视化
查看>>
js 读取 input[type=file] 内容,直接显示文本 | 图片
查看>>
软件开发学习的5大技巧,你知道吗?
查看>>
每日两道前端面试题20190226
查看>>
Git常用命令总结
查看>>
python 装饰器 part1
查看>>
2018回顾
查看>>
vue组件文档(.md)中自动导入示例(.vue)
查看>>
207. Course Schedule
查看>>
h5仿钉钉实战|仿钉钉聊天|仿钉钉模板界面
查看>>
去京东面试经验总结
查看>>