摘要:
背景想到这个题目是因为 @lijiefei 某天跟我说他有师弟面淘宝时被问到 "点击率预估的目标到底是什么", 笨狗当时胡乱扯了一通, 发现要把这个似乎已经是真理的事情掰清楚还没那么容易, 于是有此念想写文一篇详细分析下原因我和 jiefei 认识是在百度做搜索广告的时候, 那就从搜索广告开始说为什么要预估点击率, 以及预估点击率的目标. 先申明一些名词和假定:1) 每个广告 (Ad) 有一个出价 (Bid), 并有其在某情形下实际的点击率 (Click-Through-Rate, CTR)2) 广告按点击收费 (Charge per Click, CPC), 下面我们会分 阅读全文
posted @ 2013-05-22 23:16
知识天地
阅读(1310)
评论(0)
推荐(1)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/7884628前面我们已经学习过Android应用程序与SurfaceFlinger服务的连接过程了。连接上SurfaceFlinger服务之后,Android应用程序就可以请求SurfaceFlinger服务创建Surface。而当有了Surface后,Android应用程序就可以用来渲染自己的UI了。在本文中,我们将详细分析Android应用程序请求SurfaceFlinger服务创建Surface的过程。 在讲述Android应用程序请求SurfaceFlinger服务创建Sur.. 阅读全文
posted @ 2013-05-22 22:56
知识天地
阅读(1268)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/7867340在前面一篇文章中,我们分析了Android应用程序与SurfaceFlinger服务的连接过程。Android应用程序成功连接上SurfaceFlinger服务之后,还需要一块匿名共享内存来和SurfaceFlinger服务共享它的UI元数据,以便使得SurfaceFlinger服务可以正确地为它创建以及渲染Surface。在本文中,我们将详细地分析这块用来保存UI元数据的匿名共享内存的创建过程。 在Android应用程序与SurfaceFlinger服务的关系概述和学习.. 阅读全文
posted @ 2013-05-22 22:55
知识天地
阅读(425)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/7857163 前文在描述Android应用程序和SurfaceFlinger服务的关系时提到,每一个有UI的Android应用程序都需要与SurfaceFlinger服务建立一个连接,以便可以通过这个连接来请求SurfaceFlinger服务为它创建和渲染Surface。在本文中,我们将以Android系统的开机动画应用程序为例,详细描述Android应用程序是如何与SurfaceFlinger服务建立连接的。 Android系统的开机动画是由应用程序bootanimation来实现.. 阅读全文
posted @ 2013-05-22 22:54
知识天地
阅读(331)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/7747932 前面在介绍Android系统的开机画面时提到,Android设备的显示屏被抽象为一个帧缓冲区,而Android系统中的SurfaceFlinger服务就是通过向这个帧缓冲区写入内容来绘制应用程序的用户界面的。Android系统在硬件抽象层中提供了一个Gralloc模块,封装了对帧缓冲区的所有访问操作。本文将详细分析Gralloc模块的实现,为后续分析SurfaceFlinger服务的实现打下基础。 在前面Android系统的开机画面显示过程分析一文中提到,Linux内核.. 阅读全文
posted @ 2013-05-22 22:53
知识天地
阅读(4745)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/7691321好几个月都没有更新过博客了,从今天开始,老罗将尝试对Android系统的UI实现作一个系统的分析,也算是落实之前所作出的承诺。提到Android系统的UI,我们最先接触到的便是系统在启动过程中所出现的画面了。Android系统在启动的过程中,最多可以出现三个画面,每一个画面都用来描述一个不同的启动阶段。本文将详细分析这三个开机画面的显示过程,以便可以开启我们对Android系统UI实现的分析之路。 第一个开机画面是在内核启动的过程中出现的,它是一个静态的画面。第二个开机画.. 阅读全文
posted @ 2013-05-22 22:51
知识天地
阅读(3669)
评论(1)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8062945在前面两篇文章中,我们分析了SurfaceFlinger服务的启动过程以及SurfaceFlinger服务初始化硬件帧缓冲区的过程。从这两个过程可以知道,SurfaceFlinger服务在启动的过程中,一共涉及到了三种类型的线程,它们分别是Binder线程、UI渲染线程和控制台事件监控线程。在本文中,我们就将详细分SurfaceFlinger服务的线程模型,即上述三种类型的线程是如何运行和交互的。 从Android系统Surface制的SurfaceFlinger服务的启.. 阅读全文
posted @ 2013-05-22 08:00
知识天地
阅读(575)
评论(0)
推荐(0)
摘要:
在前文中,我们分析了SurfaceFlinger服务的启动过程。SurfaceFlinger服务在启动的过程中,会对系统的硬件帧缓冲区进行初始化。由于系统的硬件帧缓冲区一般只有一个,并且不是谁都可以随便访问的,因此,它就需要由一个服务来统一管理。在Android系统中,这个服务便是SurfaceFlinger。在本文中,我们就详细分析SurfaceFlinger服务是如何管理系统的硬件帧缓冲区的。 从前面Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划一文可以知道,SurfaceFlinger服务通过一个GraphicPlane对象来描述系统的显示... 阅读全文
posted @ 2013-05-22 07:54
知识天地
阅读(3546)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8022957在前面一篇文章中,我们简要介绍了Android系统Surface机制中的SurfaceFlinger服务。SurfaceFlinger服务是在System进程中启动的,并且负责统一管理设备的帧缓冲区。SurfaceFlinger服务在启动的过程中,会创建两个线程,其中一个线程用来监控控制台事件,而另外一个线程用来渲染系统的UI。在本文中,我们就将详细分析SurfaceFlinger服务的启动过程。 从前面Android系统进程Zygote启动过程的源代码分析一文可以知道,.. 阅读全文
posted @ 2013-05-22 07:53
知识天地
阅读(624)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8010977前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了SurfaceFlinger服务。有了这些预备知识之后,我们就可以从正面来分析SurfaceFlinger服务的实现原理了。SurfaceFlinger服务负责管理系统的帧缓冲区设备,并且负责渲染系统的UI,即各个应用程序的UI。在本文中,我们就简要介绍SurfaceFlinger服务,并且制定学习计划。 在前面Android应用程序与SurfaceFlinger服务的关系概述和.. 阅读全文
posted @ 2013-05-22 07:26
知识天地
阅读(245)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/7932268在前面一篇文章中,我们分析了Android应用程序请求SurfaceFlinger服务创建Surface的过程。有了Surface之后,Android应用程序就可以在上面绘制自己的UI了,接着再请求SurfaceFlinger服务将这个已经绘制好了UI的Surface渲染到设备显示屏上去。在本文中,我们就将详细分析Android应用程序请求SurfaceFlinger服务渲染Surface的过程。 Android应用程序在请求SurfaceFlinger服务渲染一个Sur.. 阅读全文
posted @ 2013-05-22 07:25
知识天地
阅读(998)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8223770在前文中,我们分析了Android应用程序窗口的运行上下文环境的创建过程。由此可知,每一个Activity组件都有一个关联的ContextImpl对象,同时,它还关联有一个Window对象,用来描述一个具体的应用程序窗口。由此又可知,Activity只不过是一个高度抽象的UI组件,它的具体UI实现其实是由其它的一系列对象来实现的。在本文中,我们就将详细分析Android应用程序窗口对象的创建过程。 从前面Android应用程序窗口(Activity)实现框架简要介绍和学习.. 阅读全文
posted @ 2013-05-22 07:18
知识天地
阅读(312)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8201936在前文中,我们简要介绍了Android应用程序窗口的框架。Android应用程序窗口在运行的过程中,需要访问一些特定的资源或者类。这些特定的资源或者类构成了Android应用程序的运行上下文环境,Android应用程序窗口可以通过一个Context接口来访问它,这个Context接口也是我们在开发应用程序时经常碰到的。在本文中,我们就将详细分析Android应用程序窗口的运行上下文环境的创建过程。 在前面Android应用程序窗口(Activity)实现框架简要介绍和学习.. 阅读全文
posted @ 2013-05-22 07:16
知识天地
阅读(586)
评论(0)
推荐(0)
摘要:
前面我们学习了SurfaceFlinger服务的实现原理。有了这个基础之后,从本文开始,我们就可以分析Android系统在Java层的UI实现了。我们知道,在Android应用程序的四大组件中,只有Activity组件与UI相关,它描述的是应用程序窗口,因此,我们就通过它的UI实现来分析Android系统在Java层的UI实现。本文主要是对Activity组件的UI实现作简要介绍以及制定学习计划。 Activity组件的UI实现需要与WindowManagerService服务和SurfaceFlinger服务进行交互。从前面Android应用程序键盘(Keyboard)消息处理机制分析一.. 阅读全文
posted @ 2013-05-22 07:15
知识天地
阅读(353)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8116866在大家的支持和鼓励下,《Android系统源代码情景分析》一书得以出版了,老罗在此首先谢过大家了。本书的内容来源于博客的文章,经过大半年的整理之后,形成了初稿。在正式出版之前,又经过了三次排版以及修订,最终得到终稿。然而,老罗深知,书中的内容并不尽完美,除了错误之外总还会有许多不尽人意的地方,因此,欢迎广大读者以及国内外的专家给老罗指出,以便改进。为了达到此目的,老罗特别在此列出该书有错误的地方。 现在暂时将书中出现的错误划分为三类,第一类是笔误,第二类是表达问题,第三类.. 阅读全文
posted @ 2013-05-22 07:13
知识天地
阅读(460)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8079456在前面的一系列文章中,我们学习了Android应用程序与SurfaceFlinger服务的关系,以及SurfaceFlinger服务的启动过程、初始化硬件帧缓冲区的过程、线程模型。SurfaceFlinger服务所做的一切都是为了给Android应用程序提服务的,即为Android应用程序渲染它们的UI。在本文中,我们就详细分析SurfaceFlinger服务渲染Android应用程序UI的过程。 从前面Android系统Surface制的SurfaceFlinger服务.. 阅读全文
posted @ 2013-05-22 07:11
知识天地
阅读(1497)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8303098在前文中,我们分析了应用程序窗口连接到WindowManagerService服务的过程。在这个过程中,WindowManagerService服务会为应用程序窗口创建过一个到SurfaceFlinger服务的连接。有了这个连接之后,WindowManagerService服务就可以为应用程序窗口创建绘图表面了,以便可以用来渲染窗口的UI。在本文中,我们就详细分析应用程序窗口的绘图表面的创建过程。 从前面Android应用程序与SurfaceFlinger服务的关系概述和.. 阅读全文
posted @ 2013-05-22 07:08
知识天地
阅读(3338)
评论(0)
推荐(1)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8275938在前两文中,我们分析了Activity组件的窗口对象和视图对象的创建过程。Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求WindowManagerService为其增加一个WindowState对象,用来描述它的窗口状态。在本文中,我们就详细分析Activity组件与WindowManagerService的连接过程。 我们从两方面来看Activity组件与WindowManagerServi.. 阅读全文
posted @ 2013-05-22 07:06
知识天地
阅读(1077)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8245546从前文可知道,每一个Activity组件都有一个关联的Window对象,用来描述一个应用程序窗口。每一个应用程序窗口内部又包含有一个View对象,用来描述应用程序窗口的视图。应用程序窗口视图是真正用来实现UI内容和布局的,也就是说,每一个Activity组件的UI内容和布局都是通过与其所关联的一个Window对象的内部的一个View对象来实现的。在本文中,我们就详细分析应用程序窗口视图的创建过程。 在前面Android应用程序窗口(Activity)实现框架简要介绍和学习.. 阅读全文
posted @ 2013-05-22 07:05
知识天地
阅读(346)
评论(0)
推荐(0)