安卓开发艺术探索——window的理解

任何视图都是依附在window上面的,通过windowManager中的方法,addview()可以完成window的创建和添加(添加到window某某中)。

文章后面对于toast显示过程除了涉及到window机制,还涉及到ipc机制,有两个binder,一个是发送toast请求的进程调用NMS(NotificationManagerService)中的方法,然后NMS回调发送请求的进程的方法,也是通过binder机制,为什么要这么麻烦?显示toast通过NMS进程的,笔者觉得这样易于管理,把toast的显示都通过一个进程nms管理同时避免一些问题。

一个应用中有多少个window?

应用window,子window,系统window。应用类 Window 对应一个 Acitivity,子 Window 不能单独存在,需要依附在特定的父 Window 中,比如常见的一些 Dialog 就是一个子 Window。系统 Window是需要声明权限才能创建的 Window,比如 Toast 和系统状态栏都是系统 Window。
 

window相当于屏幕的一块区域,具有z值,表现在较高z值的window可以覆盖下面的window,一个window可以放多个控件,在一个window中,控件有时也会存在覆盖的情况。

 

总之有view地方必定有window,先创建window然后设置view视图,最后通过viewrootimp将window添加到一个wms中的一个管理window集合中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值