一、Activity的Window创建

    (1)Activity创建

最终由ActivityThread中的performLaunchActivity()来完成。此方法通过类加载器ClassLoader创建Activity实例,调用attach关联上下文,并创建Window。

Window创建是通过PolicyManager的makeNewWindow实现。

由于Activity实现了Window的CallBack接口,所以Window改变时会回调Activity方法。(onAttachedToWindow/onDetachedFromWindow/dispatchTouchEvent)

(2)Activity视图如何附属在Window上

其由setContentView方法提供

Window---创建过程(Activity/Dialog/Toast)!!!!

Activity视图实际上转交给了Window,而Window的具体实现是PhoneWindow。而PhoneWindow的setContentView实现如下:

    (2.1)如果没有DecorView,创建它 

    (2.2)将View添加到DecorView的mContentParent中

    (2.3)回调Activity的onContentChanged方法改变视图

(3)显示问题

onResume——》makeVisible() ——》DecorView真正完成添加和显示。之前只是添加。

Window---创建过程(Activity/Dialog/Toast)!!!!

 

二、Dialog的创建

相关文章:

  • 2022-12-23
  • 2021-10-26
  • 2022-12-23
  • 2021-11-24
  • 2021-06-09
  • 2021-09-23
  • 2021-04-20
猜你喜欢
  • 2021-07-02
  • 2021-05-24
  • 2021-08-07
  • 2021-05-15
  • 2022-12-23
  • 2021-06-17
  • 2022-12-23
相关资源
相似解决方案