理解上下文Context
--摘自《Android进阶解密》
知识点:
1.Context的使用场景
1)使用Context调用方法,比如启动Activity、访问资源、调用系统级服务等
2)调用方法时传入Context,比如弹出Toast、创建Dialog等
2.Context的关联类
3.Context的关联采用了装饰模式,主要有以下优点
1)使用者(比如Service)能够更方便地使用Context
2)如果ContextImpl发生了变化,它的装饰类ContextWrapper不需要做任何修改
3)ContextImpl的实现不会暴露给使用者,使用者也不必关心ContextImpl的实现
4)通过组合而非继承的方式,拓展ContextImpl的功能,在运行时选择不同的装饰类,实现不同的功能
*Application Context创建过程*
1)在一个应用程序启动完成后,应用程序就会有一个全局的Application Context
2)ActivityClientRecord的成员变量packageInfo是LoadedApk类型的
3)Application的attach方法的作用就是使Application可以使用Context的方法,这样Application才可以用来代表Application Context
*Activity的Context创建过程*
1)Activity的Context会在Activity的启动过程中被创建
2)PhoneWindow代表应用程序窗口。PhoneWindow在运行中会间接触发很多事件,比如点击、菜单弹出、屏幕焦点变化等事件,这些事件需要转发给与PhoneWindow关联的Activity,转发操作通过Window.Callback接口实现,Activity实现了这个接口
*Service的Context创建过程*
Service的Context创建过程与Activity的Context创建过程类似,是在Service的启动过程中被创建的
欢迎关注我的微信公众号:安卓圈
相关文章
- 深入理解并行编程-分割和同步设计(二)
- Java 集合的简单理解
- spring 2.5.6 错误:Context namespace element 'component-scan' and its parser class [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only available on JDK 1.5 and higher
- 理解 angular2 基础概念和结构 ----angular2系列(二)
- 深入理解面向对象——六大基本原则
- 理解php Hash函数,增强密码安全
- 【译】Linux概念架构的理解
- 一文理解OpenStack网络
- HOG特征-理解篇
- RabbitMQ的高级特性概念理解
- 再谈git和github-深入理解
- 理解和解决requireJS的报错:MODULE NAME HAS NOT BEEN LOADED YET FOR CONTEXT
- PostgreSQL的学习心得和知识总结(九十)|深入理解PostgreSQL数据库开源MPP扩展Citus函数citus_move_shard_placement的实现原理
- C语言x86汇编指令理解volatile(三十五)
- 如何仅用递归函数和栈操作逆序一个栈——你要先用stack实现,再去改成递归——需要对递归理解很深刻才能写出来
- Android 理解DP、SP、PX的区别