<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[老罗的Android之旅]]></title><description><![CDATA[爱生活，爱Android]]></description><link>https://blog.csdn.net/Luoshengyang</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Luoshengyang]]></copyright><item><title><![CDATA[Android WebView硬件加速渲染网页UI的过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/53366272</link><guid>https://blog.csdn.net/Luoshengyang/article/details/53366272</guid><author>Luoshengyang</author><pubDate>Mon, 19 Dec 2016 00:58:18 +0800</pubDate><description><![CDATA[Android WebView作为App UI的一部分，当App UI以硬件加速方式渲染时，它也是以硬件加速方式渲染的。Android WebView的UI来自于网页，是通过Chromium渲染的。Chromium渲染网页UI的机制与Android App渲染UI的机制是不一样的。不过，它们会一起协作完成网页UI的渲染。本文接下来就详细分析Android WebView硬件加速渲染网页UI的过程。]]></description><category></category></item><item><title><![CDATA[Android WebView执行GPU命令的过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/53296819</link><guid>https://blog.csdn.net/Luoshengyang/article/details/53296819</guid><author>Luoshengyang</author><pubDate>Mon, 12 Dec 2016 01:05:00 +0800</pubDate><description><![CDATA[Android WebView使用的Chromium引擎，虽然没有自己的GPU进程或者线程，但是却可以执行GPU命令。原来，Android WebView会给它提供一个In-Process Command Buffer GL接口。通过这个接口，Chromium引擎就可以将GPU命令提交给App的Render Thread执行。本文接下来就详细分析Android WebView执行GPU命令的过程。]]></description><category></category></item><item><title><![CDATA[Android WebView启动Chromium渲染引擎的过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/53237189</link><guid>https://blog.csdn.net/Luoshengyang/article/details/53237189</guid><author>Luoshengyang</author><pubDate>Mon, 05 Dec 2016 01:02:47 +0800</pubDate><description><![CDATA[Android WebView加载了Chromium动态库之后，就可以启动Chromium渲染引擎了。Chromium渲染引擎由Browser、Render和GPU三端组成。其中，Browser端负责将网页UI合成在屏幕上，Render端负责加载网页的URL和渲染网页的UI，GPU端负责执行Browser端和Render端请求的GPU命令。本文接下来详细分析Chromium渲染引擎三端的启动过程。]]></description><category></category></item><item><title><![CDATA[Android WebView加载Chromium动态库的过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/53209199</link><guid>https://blog.csdn.net/Luoshengyang/article/details/53209199</guid><author>Luoshengyang</author><pubDate>Mon, 28 Nov 2016 01:00:19 +0800</pubDate><description><![CDATA[Chromium动态库的体积比较大，有27M左右，其中程序段和数据段分别占据25.65M和1.35M。如果按照通常方式加载Chromium动态库，那么当有N个正在运行的App使用WebView时，系统需要为Chromium动态库分配的内存为(25.65 + N x 1.35)M。这是非常可观的。为此，Android使用了特殊的方式加载Chromium动态库。本文接下来就详细分析这种特殊的加载方式。]]></description><category></category></item><item><title><![CDATA[Android WebView简要介绍和学习计划]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/53124261</link><guid>https://blog.csdn.net/Luoshengyang/article/details/53124261</guid><author>Luoshengyang</author><pubDate>Mon, 21 Nov 2016 00:59:03 +0800</pubDate><description><![CDATA[我们通常会在App的UI中嵌入WebView，用来实现某些功能的动态更新。在4.4版本之前，Android WebView基于WebKit实现。不过，在4.4版本之后，Android WebView就换成基于Chromium的实现了。基于Chromium实现，使得WebView可以更快更流畅地显示网页。本文接下来就介绍Android WebView基于Chromium的实现原理，以及制定学习计划。]]></description><category></category></item><item><title><![CDATA[Chromium插件（Plugin）执行3D渲染的过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52896774</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52896774</guid><author>Luoshengyang</author><pubDate>Mon, 14 Nov 2016 01:00:15 +0800</pubDate><description><![CDATA[Chromium为网页的<embed>标签创建了Plugin之后，Plugin就负责渲染<embed>标签的内容。Chromium为Plugin提供了OpenGL接口，使得Plugin可在网页上渲染3D内容。当然，我们也可通过WebGL接口在网页上渲染3D内容。不过，前者渲染效率会更高些，因为它是Native接口，后者是JavaScript接口。本文接下来就详细分析Plugin执行3D渲染的过程。]]></description><category></category></item><item><title><![CDATA[Chromium插件（Plugin）实例（Instance）创建过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52828875</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52828875</guid><author>Luoshengyang</author><pubDate>Mon, 07 Nov 2016 00:59:29 +0800</pubDate><description><![CDATA[Chromium在解析网页时，每遇到一个<embed>标签，就会创建一个Plugin Instance。一般来说，Plugin Instance是在Plugin进程中创建和运行的。一个Plugin Module对应一个Plugin进程，同时可以创建多个不同的Plugin Instance。前面我们已经分析Plugin Module的加载过程了，本文继续分析Plugin Instance的创建过程。]]></description><category></category></item><item><title><![CDATA[Chromium插件（Plugin）模块（Module）加载过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52773402</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52773402</guid><author>Luoshengyang</author><pubDate>Mon, 31 Oct 2016 00:59:29 +0800</pubDate><description><![CDATA[在Chromium中，每一个Plugin都对应一个Module，称为Plugin Module。一个Plugin Module可创建多个Plugin Instance。每一个Plugin Instance对应于网页中的一个<embed>标签。在为<embed>标签创建Plugin Instance之前，先要加载其对应的Plugin Module。本文接下来分析Plugin Module的加载过程。]]></description><category></category></item><item><title><![CDATA[Chromium插件（Plugin）机制简要介绍和学习计划]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52665318</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52665318</guid><author>Luoshengyang</author><pubDate>Mon, 24 Oct 2016 00:59:13 +0800</pubDate><description><![CDATA[在Chromium中，除了可以使用Extension增强浏览器功能，还可以使用Plugin。两者最大区别是前者用JS开发，后者用C/C++开发。这意味着Plugin以Native Code运行，在性能上要优于Extension，适合执行计算密集型工作。不过，以Native Code运行，使得Plugin在安全上面临更大挑战。本文接下来对Chromium的Plugin机制进行简要介绍和制定学习计划。]]></description><category></category></item><item><title><![CDATA[Chromium扩展（Extension）通信机制分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52519089</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52519089</guid><author>Luoshengyang</author><pubDate>Mon, 10 Oct 2016 01:00:35 +0800</pubDate><description><![CDATA[Chromium的Extension由Page和Content Script组成。如果将Extension看作是一个App，那么Page和Content Script就是Extension的Module。既然是Module，就避免不了需要相互通信。也正是由于相互通信，使得它们形成一个完整的App。本文接下来就分析Extension的Page之间以及Page与Content Script之间的通信机制。]]></description><category></category></item><item><title><![CDATA[Chromium扩展（Extension）的Content Script加载过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52465364</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52465364</guid><author>Luoshengyang</author><pubDate>Mon, 26 Sep 2016 01:00:57 +0800</pubDate><description><![CDATA[Chromium的Extension由Page和Content Script组成。Page有UI和JS，它们加载在自己的Extension Process中渲染和执行。Content Script只有JS，这些JS是注入在宿主网页中执行的。Content Script可以访问宿主网页的DOM Tree，从而可以增强宿主网页的功能。本文接下来分析Content Script注入到宿主网页执行的过程。]]></description><category></category></item><item><title><![CDATA[Chromium扩展（Extension）的页面（Page）加载过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52420761</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52420761</guid><author>Luoshengyang</author><pubDate>Mon, 19 Sep 2016 01:00:29 +0800</pubDate><description><![CDATA[Chromium的Extension Page其实就是网页，因此它们的加载过程与普通网页相同。常见的Extension Page有Background Page和Popup Page。其中，Background Page在浏览器窗口初始化完成后自动加载，之后运行在后台中。Popup Page在用户点击地址栏右边的按钮时加载，并且显示在弹窗中。本文接下来就分析Extension Page的加载过程。]]></description><category></category></item><item><title><![CDATA[Chromium扩展（Extension）加载过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52349287</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52349287</guid><author>Luoshengyang</author><pubDate>Mon, 12 Sep 2016 00:59:50 +0800</pubDate><description><![CDATA[Chromium在启动的时候，会根据当前用户的Profile创建一个Extension Service。Extension Service在创建过程中，会加载当前已经安装的所有Extension，并且将它们注册在一个Extension Registry中。以后通过这个Extension Registry，就可以得到当前可用的Extension的信息了。本文接下来就分析Extension的加载过程。]]></description><category></category></item><item><title><![CDATA[Chromium扩展（Extension）机制简要介绍和学习计划]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52246854</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52246854</guid><author>Luoshengyang</author><pubDate>Mon, 05 Sep 2016 00:58:34 +0800</pubDate><description><![CDATA[Chromium提供了一种Extension机制，用来增强浏览器功能。我们可以将Extension看作是一种运行在Chromium中的应用。这种应用的开发语言是JavaScript，并且UI通过HTML描述。通过使用Chromium提供的API，Extension可以访问网络，修改浏览器行为，以及操作网页的内容等。本文接下来对Chromium的Extension机制进行简要介绍，以及制定学习计划。]]></description><category></category></item><item><title><![CDATA[Chromium为视频标签<video>全屏播放的过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52125001</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52125001</guid><author>Luoshengyang</author><pubDate>Mon, 29 Aug 2016 01:00:17 +0800</pubDate><description><![CDATA[在Chromium中，<video>标签有全屏和非全屏两种播放模式。在非全屏模式下，<video>标签播放的视频嵌入在网页中显示，也就是视频画面作为网页的一部分显示。在全屏模式下，我们是看不到网页其它内容的，因此<video>标签播放的视频可以在一个独立的全屏窗口中显示。这两种截然不同的播放模式，导致Chromium使用不同的方式渲染视频画面。本文接下来就详细分析<video>标签全屏播放的过程。]]></description><category></category></item><item><title><![CDATA[Chromium为视频标签<video>渲染视频画面的过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52082146</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52082146</guid><author>Luoshengyang</author><pubDate>Mon, 22 Aug 2016 00:59:16 +0800</pubDate><description><![CDATA[在浏览器中，标签与普通标签有一个显著不同点，它们的内容不是由浏览器自己绘制出来，而是由第三方组件提供的。例如，在Android平台上，标签的内容来自于系统播放器MediaPlayer的输出。然而在非全屏模式下，标签的内容又需要像普通标签一样，嵌入在HTML页面中显示，也就是由浏览器进行渲染。本文接下来就分析Chromium渲染标签内容的原理。老罗的新浪微博：http://weibo.com/she]]></description><category></category></item><item><title><![CDATA[Chromium为视频标签<video>创建播放器的过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52019877</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52019877</guid><author>Luoshengyang</author><pubDate>Mon, 15 Aug 2016 00:59:33 +0800</pubDate><description><![CDATA[Chromium是通过WebKit解析网页内容的。当WebKit遇到标签时，就会创建一个播放器实例。WebKit是平台无关的，而播放器实现是平台相关的。因此，WebKit并没有自己实现播放器，而仅仅是创建一个播放器接口。通过这个播放器接口，可以使用平台提供的播放器来播放视频的内容。这就简化了Chromium对视频标签的支持。本文接下来就分析Chromium为视频标签创建播放器的过程。老罗的新浪微博]]></description><category></category></item><item><title><![CDATA[Chromium视频标签<video>简要介绍和学习计划]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/52009477</link><guid>https://blog.csdn.net/Luoshengyang/article/details/52009477</guid><author>Luoshengyang</author><pubDate>Mon, 08 Aug 2016 01:00:30 +0800</pubDate><description><![CDATA[随着互联网的发展，在网页上观看视频变得越来越流行，尤其是泛娱乐（手机直播）大行其道的今天。在HTML5之前，在网页上播放视频需要插件支持，例如Flash插件。有了HTML5之后，标签<video>使得浏览器有了播放视频的功能。与插件相比，浏览器的视频播放功能不仅在产品上体验更好，在技术上也更加稳定。本文接下来就简要介绍Chromium是如何实现<video>标签的视频播放功能的，以及制定学习计划。]]></description><category></category></item><item><title><![CDATA[Chromium分发输入事件给WebKit处理的过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/51875844</link><guid>https://blog.csdn.net/Luoshengyang/article/details/51875844</guid><author>Luoshengyang</author><pubDate>Mon, 25 Jul 2016 01:00:35 +0800</pubDate><description><![CDATA[Chromium的Render进程接收到Browser进程分发过来的输入事件之后，会在Compoistor线程中处理掉滑动和捏合手势这两种特殊的输入事件，其它类型的输入事件则交给Main线程处理。Main线程又会进一步将输入事件分发给WebKit处理。WebKit则根据输入事件发生的位置在网页中找到对应的HTML元素进行处理。本文接下来详细分析Chromium分发输入事件给WebKit处理的过程。]]></description><category></category></item><item><title><![CDATA[Chromium网页滑动和捏合手势处理过程分析]]></title><link>https://blog.csdn.net/Luoshengyang/article/details/51794530</link><guid>https://blog.csdn.net/Luoshengyang/article/details/51794530</guid><author>Luoshengyang</author><pubDate>Mon, 11 Jul 2016 00:59:35 +0800</pubDate><description><![CDATA[从前面一文可以知道，Chromium的Browser进程从Touch事件中检测到滑动和捏合手势之后，就会将它们发送给Render进程处理。滑动手势对应于修改网页的Viewport，而捏合手势对应于设置网页的缩放因子。通常我们比较两个浏览器的流畅程度，就是比较它们的滑动和捏合性能。因此，浏览器必须要快速地响应用户的滑动和捏合手势。本文接下来就详细分析Chromium快速响应网页滑动和捏合手势的过程。]]></description><category></category></item></channel></rss>