大家都知道我们使用Activity来完成Android的UI编程。我们需要在Activity的OnCreate函数中调用setContentView( )来设置自己的UI布局。但这只是Android的UI显示系统的冰山一角,其实为了将这些UI元素显示到屏幕,Android实现了一套复杂的显示系统,下面是我对Activity显示UI的一些理解,纰漏之处还请大家指正:
1. Activity的顶层View是DecorView, 而我们在onCreate函数中通过setContentView设置的View只不过是这个DecorView的一部分罢了。DecorView是一个FrameLayout类型的ViewGroup。
2. Activity包含一个Window(类型为PoneWindow)和一个WindowManager(类型为LocalWindowManager)对象。这两个对象将控制Activity的显示。
3. LocalWindowManager使用了WindowManagerImpl作为最最终处理对象(设计模式中的代理模式),这个WindowManagerImpl中有一个ViewRoot对象。
4. ViewRoot实现了ViewParent接口,它有2个重要的成员,一个是mView,它指向Activity的顶层UI单元的DecorView,另外一个是mSurface,这个mSurface包含了一个Canvas。除此之外,ViewRoot还通过binder机制和WindowManagerService进行跨进程交互。
5. ViewRoot是一个Handler,可以处理Handler的消息,Activity的显示就是由ViewRoot在它的performTraversals函数中完成的。
6. 整个Activity的绘图流程就是从mSurface中lock一块Canvas,然后交给mView(DecorView)去draw整个视图层次(包括mView的所有子view)。最后调用unlockCanvasAndPost释放这块Canvas,将绘制的内容渲染到屏幕。
分享到:
相关推荐
activity更新另一个activityUI方法——广播
在Activity如何改变Fragment的UI,如按返回键改变fragment里面textview的内容
安卓开发观察者模式应用-一个service通知多个activity更新ui的实现, service与activity的交互: 1.接口回调 2.自定义广播 3.观察者模式
09-01 rxbus从第二个activity发送消息给第一个activity,并后台更新第一个activity的UI
通过service发送广播通知activity修改UI的内容,源代码,希望对你有所帮助
一篇关于android activity的详细总结
andriod 开发之 Activity生命周期总结,
Activity之间的数据传递 简单功能的实现 对新手有所帮助
android学习资料之activity
Android UI Activity
09-02 eventbus3.0从第二个activity发送消息给第一个activity,并后台更新第一个activity的UI
NULL 博文链接:https://haoyuan2012.iteye.com/blog/2424033
Android ,非MainActivity类中的子线程和UI线程通讯,并且获取子线程传递的信息,更新UI界面。需要使用okHttp类库
文档通过代码实践总结了Activity的生命周期方法,Launcher Mode启动方式,Intent Filter的匹配规则。同时文档中用截图记录关键的Log信息。文件中也包含了代码可以方便的学习和理解Activity。
android 在Activity里显示列表 ListView的布局
假如说有一个activity A,在A中跳转到Activity B, 然后在B中跳转到Activity C中,最后要在C中把activity A,B,C都关掉。 首先有一个Activity A,A中有一个Button,点击这个Button会跳到Activity B中去,但会拿到...
Android 如何在一个Activity中显示多种类型的checkBox.zip,欢迎下载!
Android activity、菜单及dialog、列表等常见UI源码,下面依次介绍各目录里的功能演示: activity_intent:activity的跳转1.不带返回值的跳转2.带返回值的跳转,intent的简单介绍。Bundle的简单介绍。 dialog...
为了方便维护我们通常会把不同的业务封装成不同的业务类,这样就给界面的显示带来了较大的麻烦。资源针对这个问题给出了解决方案的封装工程
Android学习笔记-Activity篇 Contents Android学习笔记-Activity篇 1 一、activity创建: 1 二、在manifest.xml中声明activity: 1 三、启动activity 1 3.1 启动不带返回结果的Activity 1 3.2 启动带有返回结果的...