-
Notifications
You must be signed in to change notification settings - Fork 777
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-12-17:谈一谈Activity,View,Window三者的关系? #213
Comments
在activity中调用attach,创建window; |
Activity就像工匠,Window就像是窗户,View就像是窗花,LayoutInflater像剪刀,Xml配置像窗花图纸 |
首先先说下 Window:Window 表示窗口,是个抽象的概念,每个 Window 都对应着一个 View 和一个 ViewRootImpl,Window 通过 ViewRootImpl 和 View 建立联系,因此 Window 并不是实际存在的,他是以 View 的形式存在的。也就是说 View 才是 Window 存在的实体。实际使用中无法直接访问 Window,对 Window 的访问必须通过 WindowManager。 再说 View:View 是 Android 中视图的呈现方式,但是 View 不能单独存在,它必须附着在 Window 这个抽象的概念上,因此有视图的地方就有 Window。 最后 Activity:Android 中的四大组件之一 Activity 就是用来显示视图的,因此一个 Activity 就对应着一个 Window,不止 Activity,其实 Dialog,Toast,PopUpWindow,菜单等都对应着一个 Window。 Activity,View,Window 相关连的具体实现:在 Activity 启动时 通过 attach 方法,创建 Window 的实例即 PhoneWindow 然后绑定 Activity,Activity 实现了 Window 的 Callback 等接口,当 Window 接收到外界的状态改变时就会回调给 Activity,比如 onAttachToWindow、onDetacheFromWindow、dispatchTouchEvent 等。 总结:Activity 通过 Window 完成对视图 View 的管理,一个 Activity 对应一个 Window,每个 Window 又对应一个 View。 |
Activity view window的关系是 |
No description provided.
The text was updated successfully, but these errors were encountered: