美文网首页
个性化地理解window与windowManager等

个性化地理解window与windowManager等

作者: devYOUK | 来源:发表于2016-06-29 22:36 被阅读57次

    最近在看一本挺有名的书,对里面讲到的关于window的概念不完全认同,在这里写下自己的理解。

    类名|理解|比喻
    :-:|:-
    view | android中最基本的可视元素 | 图象
    viewRootImp |正如名字那样,是很多View的行为的发起点,如measure, layout, draw...|胶片
    window |phoneWindow是window的唯一实现类,一堆视图功能的集合,有转场动画等|美化工具
    windowManager |android提供的一个添加/更新/移除视图的简单入口,只要将 view 传入 windowManager.addView()方法中,就可以在屏幕中展示该view|放映机

    书中还介绍了 session, windowManagerService,在我看来都是比 windowManager 更底层的内容而已。
    书中描述,将一个 view 塞到 windowManager 中,就添加了一个 window。我个人觉得这样的说法特别让人困惑,因为 window 本身在 android 中是个有精确作用的类,而作者描述的像是他个人的一种概念,用的又是一样的名字。总之我是花了很久才绕出来。
    Activity跟Dialog在创建视图的时候,是会 new phoneWindow()的,我认为他们才真正具有 "window",就算new phoneWindow出来了,如果不将依赖的view塞到windowManager中,屏幕上是看不到内容的;而Toast虽然也有通过windowManager新建可视化视图,但我不认为那个是 "window"。
    总之,要在屏幕上展示东西,只有 view 跟 windowManager 是必须的(viewRootImp也可以说是必须的,不过是个中间产物,不需要自己生成),而 window 只在特殊的场景下需要,不是必须的。

    相关文章

      网友评论

          本文标题:个性化地理解window与windowManager等

          本文链接:https://www.haomeiwen.com/subject/oduxjttx.html