Android开发艺术探索_第八章

第八章 理解Window和WindowManager

8.2 Window的内部机制

  1. 每一个Window都对应一个View和一个ViewRootImpl,Window和View通过ViewRootImpl来建立联系,因而Window并不实际存在,它以View的形式存在。

View不能单独存在,必须附着在Window这个抽象的概念上。

Activity、Dialog等需要呈现视图的地方都对应一个Window。

8.3 Window的创建过程

8.3.1 Activity的Window创建过程

  1. 在启动过程中会调用attach方法为其关联运行过程中所以来的一系列上下文环境变量。

  2. 在Activity的attach方法里,系统会创建Activity所属的Window对象并为其设置回调接口,Window对象的创建通过PolicyManager的makeNewWindow方法实现。

  3. 由于Activity实现了Windowd的Callback接口,因此当Window接收到外界的状态变化时会回调Activity的方法。

  4. Window更多表示的是一种抽象的功能集合,虽说早在Activity的attach方法中Window就已被创建,但是这个时候由于DecorView并没有被WindowManager识别,所以这个时候得Window无法提供具体功能,因为它还无法接受外界的输入信息。在ActivityThread的handleResumeActivity方法中,首先会调用Activity的onResume方法,接着会调用Activity的makeVisible(),在这方法中,DecorView真正地完成添加和显示,Activity的视图才能被用户看到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值