lin20080410的专栏

从站在巨人的肩上,向成为巨人迈进... 互相学习!

排序:
默认
按更新时间
按访问量

App的启动过程(10)surfaceflinger对数据合成,送显

下面就是SurfaceFlinger执行实际的数据合成,然后刷新到屏幕上。 voidSurfaceFlinger::onMessageReceived(int32_t what) {          switch(what) {          case MessageQueue::IN...

2017-06-01 17:43:35

阅读数:621

评论数:0

App的启动过程(9)surfaceflinger对vsync的处理

这个onVSyncReceived函数不复杂,感觉就是打开vsync,关掉vsync,但是要弄明白,还是要从surfaceflinger的初始化开始:          先简单概括下vsync信号的传递:首先是HWComposer产生vsync,通过回调hook_vsync,在通过mEventHa...

2017-06-01 17:41:07

阅读数:867

评论数:2

App的启动过程(8)surfaceflinger的启动

接下来就是怎样把BufferQueue中数据,也就是GraphicBuffer中的数据显示到屏幕上,这就是surfaceflinger做的事情。          先说surfaceflinger的启动,Android7.0上,应该是在接下init.rc脚本时启动的,启动后运行的是main_su...

2017-06-01 17:37:18

阅读数:762

评论数:0

App的启动过程(7)BufferQueue的申请分配

接下来看下BufferQueue的申请分配,就是经典的生产者-消费者模型。 1)BufferQueueCore 可以认为BufferQueueCore是一个服务中心,生产者、消费者都要通过它来管理buffer。里面有一个重要的成员数组:BufferQueueDefs::SlotsType mS...

2017-06-01 17:34:23

阅读数:1811

评论数:0

App的启动过程(6)面向应用程序的本地窗口surface

接下来分析下面向应用程序的本地窗口surface,这里的surface不是Surface.java,而是指Surface.cpp,它承担着应用程序中的UI显示需求,一方面要向上层提供绘制图像的画板,也就是GraphicBuffer,另一方面配合surfaceflinger完成收集应用程序的图像数据...

2017-06-01 17:17:29

阅读数:545

评论数:0

App的启动过程(5)ViewTree遍历中最后一步的Draw

以上是WMS端窗口的添加,下面接着ViewTree遍历中最后一步的Draw的分析。 /* ViewRootImpl.java */ private boolean drawSoftware()à canvas =mSurface.lockCanvas(dirty); 跟View交互的是Canvas...

2017-06-01 17:15:01

阅读数:347

评论数:0

App的启动过程(4)在WMS中注册窗口

Step3、在WMS中注册窗口 WMS中的窗口window是一个抽象的概念,由WindowState来描述状态。跟PhoneWindow不是一个概念。接着root.setView()分析。 /* ViewRootImpl.java */ ViewRootImpl除了作为ViewTree的管理者,另...

2017-06-01 17:10:57

阅读数:249

评论数:0

App的启动过程(3)应用进程侧-主线程的处理

第二阶段、应用进程侧的处理,主要是ViewTree的遍历。          接着第一段的最后调用:app.thread.scheduleLaunchActivity();这里的.thread是ApplicationThread,它是应用进程跟AMS通信的桥梁,AMS会通过:app.makeAct...

2017-06-01 17:07:09

阅读数:256

评论数:0

App的启动过程(2)framework侧-恢复最上层的Activity

上篇文档说到:startActivity的判断处理流程,接下来会调用resumeFocusedStackTopActivityLocked@ActivityStackSupervisor.java,恢复最上层的Activity,pause之前的Activity,先看resumeFocusedSta...

2017-06-01 17:02:33

阅读数:435

评论数:0

App的启动过程(1)framework侧-startActivity的判断处理流程

通过点击桌面图标,可以启动这个应用程序制定的一个Activity,后面会调用到ActivityManagerService的StartActivity的函数。经过一些判断和准备,如果顺利,AMS最终尝试启动制定的Activity,Android规定,在新的Activity启动前,原先处于resum...

2017-06-01 16:59:08

阅读数:541

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭