Surface 总结:绘制流程

2016-8-5 chenhui Surface

Surface 非常复杂,这里就写一个大致流程,详细见图。 简单的说,绘制流程可以简单分为: 创建 SharedClient( 31 个 SharedBufferStack ) 创建 Layout( 两个 GriphicBuffer ) 创建 SharedBufferServer ...

阅读全文>>

评论(3) 浏览(658)

Native 层数据结构之间的关系

2016-7-31 chenhui Surface

在阅读本文前,请先阅读:Java 层数据结构之间的关系 之前说过,一个 Surface 和一个显示层(Layer)一一对应,也和 Activity 一一对应。所以,在 Activity 和 WMS 建立起连接后,WMS 就会开始在 Native 层创建 Surface 对象, WMS 创建的 Surface 对象,其实实际上最终服务的,还是 Activity...

阅读全文>>

评论(0) 浏览(339)

Java 层数据结构之间的关系

2016-7-30 chenhui Surface

在阅读本文前,请先阅读:绘制原理简解 其实 Native 层的数据结构之间的关系非常的简单,可以概括如下: Activity 有一个 PhoneWindow(Window),他管理着一个 DecorView,DecorView 是 Activity 的根 View,他默认会绘制标题栏等组件,然后内部有一个 ViewGroup,应用程序绘制的内容...

阅读全文>>

评论(0) 浏览(343)

绘制原理简解

2016-7-28 chenhui Surface

一、 Surface 是 Android 用来实现显示界面的一套系统。 Android 应用程序在使用 Surface 时,总共会涉及到三个进程:应用程序自身、WindowManagerService(下简称WMS)和 SurfaceFlinger(下简称 SF)。 应用程序自身起到的作用是:提供一套界面的绘制方案。 WMS 起到的作用是:发送通知...

阅读全文>>

评论(0) 浏览(325)

View 的测量、布局和绘制

2016-7-11 chenhui View

请先了解 MeasureSpec :MeasureSpec 。 Android 通过 View 的 measure 来测量一个 View 的大小,measure 最终又调用到 View 的 onMeasure 方法。onMeasure 在 View 和 ViewGroup 中的实现不同,具体的可看: 自定义View 自...

阅读全文>>

评论(0) 浏览(277)

View 绘制流程概述

2016-7-10 chenhui View

View 是 Android 中所有控件的基类,不管是 Button 还是 TextView,都是他的子类,当然也包括 ViewGroup,ViewGroup 继承 View 的同时,也支持了“容器”功能,即 ViewGroup 内部能存放一组 View。 View 的绘制是从 ViewRoot 的 performTraversals 方法开始的,他经过 measure、layout...

阅读全文>>

评论(0) 浏览(243)

Nginx 配置 PHP

2016-6-17 chenhui Nginx

Nginx 通过 fastCGI 的方式调用 PHP,所以我们要先安装 PHP-fpm,安装方式百度上都有就不写了。 安装完后,直接在 server {} 内填入如下即可 server { listen 80; server_name localhost; root /usr/wwwr...

阅读全文>>

评论(0) 浏览(30)

文件管理器实现

2016-6-1 chenhui 随笔

文件管理器的实现比较复杂,本文只介绍一些关键点,为没有思路的同学起到提醒的作用,一些杂七杂八的简单的功能可以自己琢磨。 一个优秀的文件管理器,他应该实现如下功能: 文件系统浏览和操作(需排序) 文件分类(如音乐、视频、图片) 文件系统浏览的功能如何实现? 一个 Layout,里面放一个 ListView,就构成了文...

阅读全文>>

评论(0) 浏览(364)

即时通讯实现

2016-6-1 chenhui 随笔

本文整理自博主以前做的仿微信项目源代码以及笔记。 即时通讯本身比较简单,所以本文就大概说一下要点。 即时通讯是网络应用,所以他除了一个 Android 客户端以外,还需要实现一个服务端。 服务端的实现可以有两种: 使用 PHP 此类 Web 后台开发常用的语言(好吧,Web 后台开发我只会 PHP) 使用 C、C++、Java...

阅读全文>>

评论(0) 浏览(327)

Binder 代理对象的获取

2016-5-30 chenhui Binder

本文只讲解基本原理,不贴任何代码。阅读本文前,请先阅读 Binder 通信流程之详细分解 。 当一个 Service 注册到 SM 内后,如果一个 Client 想和他进行通信,那么就要先获得一个引用到 Service 的实体对象的引用对象,以及一个封装这个引用对象的代理对象。 引用对象位于内核空间,代理对象位于用户空间。 怎么获取呢?...

阅读全文>>

评论(0) 浏览(285)

Server Manager 的启动

2016-5-27 chenhui Binder

SM 也是一个应用程序,所以他也有 main() 函数。 int main(int argc, char **argv) { struct binder_state *bs; void *svcmgr = BINDER_SERVICE_MANAGER; // 打开 /dev/binder 并进行映射 bs = bin...

阅读全文>>

评论(0) 浏览(346)

Binder 通信流程之详细分解

2016-5-22 chenhui Binder

阅读本文前,请先阅读:Binder 通信流程 否则陷进去反倒理不清楚。 下面对 Binder 通信流程的每一个步骤的代码进行解释,力求读者能弄懂 Binder 是怎么进行通信的。 === 第一次通信开始 第一步、得到或创建 SM 的代理对象,这样才能和 SM 通信。 在这里要先搞清楚一点:我...

阅读全文>>

评论(0) 浏览(385)

Binder 通信流程

2016-5-21 chenhui Binder

Binder 的一次完整通信可以看成两次或四次通讯。 第一次是 Client 发送数据给 Binder,告知 Binder 该怎么做 第二次是 Binder 发现 Client 要转发数据给别人,于是他把数据发送给对端,并返回 Client 完成信息 第三、四次是 Client 在需要返回值时,对端返回数据给 Binder,再返回给 Client ...

阅读全文>>

评论(0) 浏览(310)

进程地址空间图示

2016-4-25 chenhui 进程管理

自绘图,配合进程地址空间观看。

阅读全文>>

评论(0) 浏览(303)

进程管理图示

2016-4-25 chenhui 进程管理

自绘图,配合 进程调度 观看。

阅读全文>>

评论(0) 浏览(305)

SLAB 分配器图示

2016-4-24 chenhui 内存管理

自绘图,请搭配 SLAB分配器 观看

阅读全文>>

评论(0) 浏览(289)

伙伴系统图示

2016-4-24 chenhui 内存管理

自绘图,请搭配 伙伴系统 观看 在观看本图前,需理解 内存管理图示

阅读全文>>

评论(0) 浏览(262)

设备模型图示

2016-4-24 chenhui 设备驱动

阅读全文>>

评论(0) 浏览(300)

内存管理图示

2016-4-24 chenhui 内存管理

自绘图,请搭配 节点、内存管理区及页框 观看

阅读全文>>

评论(0) 浏览(278)

文件的打开、共享与复制

2016-4-22 chenhui 文件系统

在我们创建一个进程时,系统会根据创建时的参数来决定共享或复制一些文件给新进程。 进程的创建可参考:进程的创建 在了解文件的共享和复制之前,需要先了解进程是怎么打开文件的,而了解进程是怎么打开文件的之前,需要了解进程是怎么管理打开的文件的。 进程描述符(task_struct)中,有一个类型为 files_struct 的&nbs...

阅读全文>>

评论(0) 浏览(357)

Copyright ©2015-2016 freehui All rights reserved