转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/125687836
本文出自【赵彦军的博客】
文章目录
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 方法。
结束了,下班。