基于4.4 src:

View的onAttachToWindow() 是在其dispatchAttachedToWindow(AttachInfo info, int visibility)里被无条件调用的,

而View的dispatchAttachedToWindow()有两个被调用途径:

1. ViewRootImpl 第一次 performTraversal()时会将整个view tree里所有有view的 dispatchAttachedToWindow() DFS 调用一遍.

2. ViewGroup的 addViewInner(View child, int index, LayoutParams params, boolean preventRequestLayout):

AttachInfo ai = mAttachInfo;if (ai != null && (mGroupFlags & FLAG_PREVENT_DISPATCH_ATTACHED_TO_WINDOW) == 0) {            .........................................            child.dispatchAttachedToWindow(mAttachInfo, (mViewFlags&VISIBILITY_MASK));            .........................................}
AttachInfo 是从ViewRootImpl传下来的,ViewRootImpl构造时:

mAttachInfo = new View.AttachInfo(mWindowSession, mWindow, display, this, mHandler, this);



更多相关文章

  1. 睡眠唤醒机制简介
  2. 小心XmlPullParser.netText()方法
  3. android Java代码的启动
  4. android创建桌面快捷方式(启动目标非项目的启动页)
  5. Android(安卓)面试之 Android(安卓)篇一
  6. ReactNative调用原生封装的代码和控件
  7. Android(安卓)数据业务框架分析
  8. Android(安卓)电源管理
  9. Android(安卓)MediaScanner源代码解析

随机推荐

  1. android checkbox 或RadioButton, textVi
  2. Android的PopupWindow使用android学习之
  3. Service完全解析 分类: ANDROID
  4. Android简易实战教程--第二话《两种进度
  5. Android开发实践:布局的平分
  6. Android仿QQ首页ListView左滑置顶、删除
  7. Android(安卓)高通平台Camera录制--MPEG4
  8. Android(安卓)WebDAV 客户端实现
  9. android源码项目
  10. Android优秀开源项目汇总