Android 中Activity,Window和View之间的关系
2012-05-08 16:41
483 查看
对于屏幕显示而言,整个是window,这个window里显示的东西是view(activity是逻辑上的东西,增加了生命周期管理等. 里面具体的东西也是view。而且启动activity的实现也是往window里加view),往window里加view,是通过调用WindowManager(WindowManagerImpl).addView()来实现的。
在addView里,会为每个view创建一个viewRoot(这是逻辑上的东西,用来负责view的事件处理和逻辑处理,并和WindowsManagerService建立联系),而在WindowManagerImpl里,会维护viewRoot的数组。
最终会调用ViewRoot.setView(),在setView里会显示该view等。在setView的实现里,会调用Session.add()来addWindow,通过这个方法,会将ViewRoot和WindowManagerService联系起来(比如说分发事件等),并且这个方法里会调用PhoneWindowManager.prepareAddWindowLw()。
调用过程如下:
ViewRoot.setView()->WindowManagerService.relayout()->WindowManagerService.relayoutWindow()->WindowManagerService.performLayoutAndPlaceSurfacesLocked()->WindowManagerService.performLayoutAndPlaceSurfacesLockedInner()->WindowManagerService.performLayoutLockedInner()->PhoneWindowManager.beginLayoutLw()
然后ViewRoot.setView()->WindowManagerService.finishDrawing()陆续又会调用到一些PhoneWindowManager里的layout方法。
对于WindowManager而言,只要调用了AddView,上述的流程都会走一遍。
对于一个Window而言,目前大概可以分为几个部分:statusbarview(0,0,320,25),应用的activity(0, 25,320,480)
在addView里,会为每个view创建一个viewRoot(这是逻辑上的东西,用来负责view的事件处理和逻辑处理,并和WindowsManagerService建立联系),而在WindowManagerImpl里,会维护viewRoot的数组。
最终会调用ViewRoot.setView(),在setView里会显示该view等。在setView的实现里,会调用Session.add()来addWindow,通过这个方法,会将ViewRoot和WindowManagerService联系起来(比如说分发事件等),并且这个方法里会调用PhoneWindowManager.prepareAddWindowLw()。
调用过程如下:
ViewRoot.setView()->WindowManagerService.relayout()->WindowManagerService.relayoutWindow()->WindowManagerService.performLayoutAndPlaceSurfacesLocked()->WindowManagerService.performLayoutAndPlaceSurfacesLockedInner()->WindowManagerService.performLayoutLockedInner()->PhoneWindowManager.beginLayoutLw()
然后ViewRoot.setView()->WindowManagerService.finishDrawing()陆续又会调用到一些PhoneWindowManager里的layout方法。
对于WindowManager而言,只要调用了AddView,上述的流程都会走一遍。
对于一个Window而言,目前大概可以分为几个部分:statusbarview(0,0,320,25),应用的activity(0, 25,320,480)
相关文章推荐
- Android-Activity、Window、View之间的关系
- Android 中Activity,Window和View之间的关系
- android中View, Window, Activity, WindowManager,ViewRoot几者之间的关系
- Android 中Activity,Window和View之间的关系
- Android Activity 、 Window 、 View之间的关系
- android发现之旅之ViewRootImpl,Activity,Window,DecorView之间的关系
- Android中Activity、Window和View之间的关系
- Android 中Activity,Window和View之间的关系
- Android中Activity,View,Window之间的关系
- Android 中Activity,Window和View之间的关系 - 2
- Android中Activity, View,Window,DecorView之间的关系
- android 中View, Window, Activity, WindowManager,ViewRoot几者之间的关系
- Android 中的Activity、Window、View之间的关系
- 2011-08-21 19:24 Android 中Activity,Window和View之间的关系
- Android 之Activity、Window、View之间的关系
- android中View, Window, Activity, WindowManager,ViewRoot几者之间的关系
- Android 中Activity,Window和View之间的关系
- Android 中Activity,Window和View之间的关系
- Android进阶笔记08:Android 中Activity、Window和View之间的关系
- Android 中Activity,Window和View之间的关系