文章目录
- handleDestroyActivity
- performDestroyActivity 的作用
- r.window.clearContentView()
- wm.removeViewImmediate(v)
- removeView 触发 onDetachedFromWindow
handleDestroyActivity
当 Activity 销毁的时候,ActivityThread 的 handleDestroyActivity 方法会执行,精简版如下:

简单说一下,每个方法的含义:
performDestroyActivity 的作用

- activity mFinished 变量置为 true
- 2、mInstrumentation.callActivityOnDestroy 会触发 Activity onDestroy 回调

r.window.clearContentView()

DecorView 遍历移除所有子View

wm.removeViewImmediate(v)
wm 是 WindowManager 的意思 。在这里其实是 WindowManagerImpl 实例
v 是 DecorView

mGlobal 是 WindowManagerGlobal 实例

removeViewLocked()

先看看 view.assignParent(null);
view 就是 DecorView

把 DecorView 的 mParent 置为 null 。
DecorView 的 mParent 原来是ViewRootImpl, assignParent (null) 的意思是:DecorVIew 和 ViewRootImpl 断开连接。
在来看 root.die(immediate);
root 是 ViewRootImpl 实例

doDie

dispatchDetachedFromWindow

mView 是 DecorView
又因为 DecorView 没有覆写 dispatchDetachedFromWindow , 所以我们要看 ViewGroup 的 dispatchDetachedFromWindow 方法。

遍历子view , 调用其 dispatchDetachedFromWindow 方法,然后再调用 super.dispatchDetachedFromWindow
我们看看 View 的 dispatchDetachedFromWindow

调用 onDetachedFromWindow(); , 然后调用 OnAttachStateChangeListener 的 onViewDetachedFromWindow 方法。
由于,当前是 DecorVIew , 所以我们看看 他的 onDetachedFromWindow 方法。

cb.onDetachedFromWindow(); 就会触发 Acitivity 的 onDetachedFromWindow 方法。
结束了,下班。
removeView 触发 onDetachedFromWindow











