首页 > 试题广场 >

下列关于View、Activity、Window的表述正确的

[不定项选择题]

下列关于View、Activity、Window的表述正确的是?()

  • 每一个Activity分配唯一个PhoneWindow
  • DecorView是PhoneWindow的根视图
  • Activity的setContentView()方法必须在Activity完成attach之后调用
  • View的绘制最终是由PhoneWindow执行的
关系简述 每一个 Activity 都持有一个 Window 对象, public class Activity extends ContextThemeWrappe{ private Window mWindow; } 但是 Window 是一个抽象类,这里 Android 为 Window 提供了唯一的实现类 PhoneWindow。也就是说 Activity 中的 window 实例就是一个 PhoneWindow 对象。 但是 PhoneWindow 终究是 Window,它并不具备多少 View 相关的能力。
发表于 2020-11-27 11:12:38 回复(1)
DecorView是整个Window界面的最顶层View,View的测量、布局、绘制、事件分发都是由DecorView往下遍历这个View树
发表于 2020-03-24 18:22:12 回复(0)
d这个选项有问题,它想问的应该是view的绘制流程从哪里开始,如果说view的绘制由什么执行,那就涉及到底层的hwui,感觉和这题没啥关系。如果说绘制从哪里开始的话,最直接的是从viewrootimpl开始,如果要再往前溯源也可以 因为android是基于事件驱动的,view的绘制也会对应一个事件,而对于这块内容 可以溯源到硬件层。所以这个选项 对错都没有太大的意义。
发表于 2023-02-04 12:41:22 回复(0)
 View的绘制最终是由ViewRootImpl执行的,ViewRootImpl是负责管理View树的绘制过程的核心类,它与PhoneWindow和DecorView都有关联,但不是PhoneWindow直接执行绘制的。
发表于 2023-07-29 15:12:25 回复(0)
当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView建立关联。

View的绘制过程就是从ViewRoot的performTraversals方法开始的,它经过measure、layout、draw三个过程才能最终将一个View绘制出来
发表于 2023-04-13 10:19:58 回复(0)
我看到的A是每个Activity分配一下,后面的phonewindow被吃掉了!
发表于 2021-07-06 21:53:52 回复(0)
View的绘制 不是 由PhoneWindow执行的吗,应该是啊,还有谁来执行啊?
发表于 2020-12-10 23:01:35 回复(1)
DecorView是PhoneWindow的根视图
写反了吧?DecorView是PhoneWindow的子类啊
发表于 2019-11-18 11:09:12 回复(1)
setContentView是手动设置的,如果不用呢?
发表于 2019-07-07 21:27:22 回复(1)