- 博客(12)
- 资源 (10)
- 收藏
- 关注
原创 获取Binder Server 的过程
相关文件参考:为什么将文件映射到进程空间,会比直接对文件read/write效率更高,请参考http://www.cnblogs.com/xubenben/p/4424398.html点击打开链接 http://blog.csdn.net/lin20044140410/article/details/50951260点击打开链接http://blog.csdn.net/lin...
2017-06-26 14:44:57 1682
原创 常用设计模式
常用设计模式原则、法则:一、单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合到一起,一个职责的变化可能会消弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把这些职责相互分离。如果能想到多余一个的动机去改变一个类,那么这个类就有多余一个的
2017-06-21 18:39:25 224
原创 App的启动过程(10)surfaceflinger对数据合成,送显
下面就是SurfaceFlinger执行实际的数据合成,然后刷新到屏幕上。voidSurfaceFlinger::onMessageReceived(int32_t what) { switch(what) { case MessageQueue::INVALIDATE: { bool refreshNeeded =handleMes
2017-06-01 17:43:35 2299
原创 App的启动过程(9)surfaceflinger对vsync的处理
这个onVSyncReceived函数不复杂,感觉就是打开vsync,关掉vsync,但是要弄明白,还是要从surfaceflinger的初始化开始: 先简单概括下vsync信号的传递:首先是HWComposer产生vsync,通过回调hook_vsync,在通过mEventHandler.onVSyncReceived(disp,timestamp);到surfaceflin
2017-06-01 17:41:07 2308 2
原创 App的启动过程(8)surfaceflinger的启动
接下来就是怎样把BufferQueue中数据,也就是GraphicBuffer中的数据显示到屏幕上,这就是surfaceflinger做的事情。 先说surfaceflinger的启动,Android7.0上,应该是在接下init.rc脚本时启动的,启动后运行的是main_surfaceflinger.cpp。/*surfaceflinger.rc*/service s
2017-06-01 17:37:18 1587 1
原创 App的启动过程(7)BufferQueue的申请分配
接下来看下BufferQueue的申请分配,就是经典的生产者-消费者模型。1)BufferQueueCore可以认为BufferQueueCore是一个服务中心,生产者、消费者都要通过它来管理buffer。里面有一个重要的成员数组:BufferQueueDefs::SlotsType mSlots;这个BufferSlot中有一个成员变量:spmGraphicBuffer;记录这个slot
2017-06-01 17:34:23 3665
原创 App的启动过程(6)面向应用程序的本地窗口surface
接下来分析下面向应用程序的本地窗口surface,这里的surface不是Surface.java,而是指Surface.cpp,它承担着应用程序中的UI显示需求,一方面要向上层提供绘制图像的画板,也就是GraphicBuffer,另一方面配合surfaceflinger完成收集应用程序的图像数据。当然,应用程序是不可能直接使用surface(后者说bufferQueue,图形缓冲区Graphic
2017-06-01 17:17:29 900
原创 App的启动过程(5)ViewTree遍历中最后一步的Draw
以上是WMS端窗口的添加,下面接着ViewTree遍历中最后一步的Draw的分析。/* ViewRootImpl.java */private boolean drawSoftware()à canvas =mSurface.lockCanvas(dirty);跟View交互的是Canvas,比如draw(Canvas cs)参数,应用进程与surfaceflinger交互的是surf
2017-06-01 17:15:01 561
原创 App的启动过程(4)在WMS中注册窗口
Step3、在WMS中注册窗口WMS中的窗口window是一个抽象的概念,由WindowState来描述状态。跟PhoneWindow不是一个概念。接着root.setView()分析。/* ViewRootImpl.java */ViewRootImpl除了作为ViewTree的管理者,另一个作用就是跟WMS通信,它在构造时就建立了与WMS通信的通道,这里的WindowSession
2017-06-01 17:10:57 571
原创 App的启动过程(3)应用进程侧-主线程的处理
第二阶段、应用进程侧的处理,主要是ViewTree的遍历。 接着第一段的最后调用:app.thread.scheduleLaunchActivity();这里的.thread是ApplicationThread,它是应用进程跟AMS通信的桥梁,AMS会通过:app.makeActive(mSystemThread.getApplicationThread(),mProcessS
2017-06-01 17:07:09 541
原创 App的启动过程(2)framework侧-恢复最上层的Activity
上篇文档说到:startActivity的判断处理流程,接下来会调用resumeFocusedStackTopActivityLocked@ActivityStackSupervisor.java,恢复最上层的Activity,pause之前的Activity,先看resumeFocusedStackTopActivityLocked函数的处理。/*ActivityStackSuperviso
2017-06-01 17:02:33 838
原创 App的启动过程(1)framework侧-startActivity的判断处理流程
通过点击桌面图标,可以启动这个应用程序制定的一个Activity,后面会调用到ActivityManagerService的StartActivity的函数。经过一些判断和准备,如果顺利,AMS最终尝试启动制定的Activity,Android规定,在新的Activity启动前,原先处于resumed状态的activity会被pause。将一个activity置为pause,是通过这个activi
2017-06-01 16:59:08 1136
simple-ffmpeg-player.zip
2020-03-13
jetty-libs-9.4.zip
2019-11-26
android studio3.1匹配的gradle版本最新4.4
2017-12-25
release3.1
2017-11-21
android make 介绍
2017-11-16
如何分析JAVA crash
2017-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人