Android setContentView操作

sto*_*986 8 android view android-activity

我已经读过,在活动的早期调用setContentView()很重要,因为它构建了可能被onCreate()中的后续代码操纵的视图对象.

就生命周期而言,一旦调用setContentView(),视图就会被绘制到屏幕上,或者是否允许onCreate()函数在视图对象中构建/填充信息,并等待在onCreate之后实际绘制它( )完成?

谢谢!

Com*_*are 9

一旦调用setContentView(),视图就会被绘制到屏幕上

没有.

或者它是否允许onCreate()函数构建/填充视图对象中的信息,并等待在onCreate()完成后实际绘制它?

是.该View对象被立即创建为的一部分setContentView().但是,所有绘制操作(来自onCreate()或其他任何地方)实际上都会将消息放在主应用程序线程处理的消息队列中.

  • 没有太多关于它的书面文章.一般的经验法则是:如果它修改了屏幕,当你调用方法时实际的屏幕更改不会生效(例如,``TextView``上的'setText()`.相反,您的方法调用会创建一个表示请求的对象,该对象位于消息队列中.当主应用程序线程没有运行代码时(例如,`onCreate()`),处理该队列.这就是为什么要让你从主应用程序线程中保留长时间运行的东西. (2认同)
  • 这对大多数人来说可能是显而易见的,但作为初学者,我发现这也很有用(来自Handler对象的文档),因为我不知道这样的消息队列:"为您的应用程序创建进程时,它的主要部分thread专门用于运行一个消息队列,负责管理顶级应用程序对象(活动,广播接收器等)以及它们创建的任何窗口." (2认同)