「Android」SurfaceFlinger分析】的更多相关文章

本篇针对surfaceFlinger模块进行分析,目录如下: 1.SurfaceFlinger功能 1.1.BufferQueue原理(native/libs/gui模块) 1.2   layer显示内存分配(native/libs/ui模块) 1.3.surfaceFlinger处理(native/.../surfaceFlinger模块) 2.工程代码解析: 2.1.surfaceFlinger启动过程 2.2.surfaceFlinger事务处理  3.总结(处理流程.交互模块) ****…
本篇针对Surface模块进行分析,从Java层的Activity创建开始,到ViewRoot.WindowsManagerService,再到JNI层和Native层. 首先推荐一个Android源码查看的网站:http://androidxref.com/ Surface的创建涉及三个部分: App 进程App需要将自己的内容显示在屏幕上,所以App负责发起Surface创建请求,创建好Surface后, 就可以直接可以在canvas上画图等,最终都会保存到Surface里的buffer里,…
Android系统中的消息驱动工作原理: 1.有一个消息队列,可以往这个消息队列中投递消息; 2.有一个消息循环,不断的从消息队列中取得消息,然后处理. 工作流程: 1.事件源将待处理的消息加入到消息队列中,一般是加至队列尾部(优先级高的消息可以加至队列头),事件源提交的消息可以是按键.触摸等物理事件产生的消息,也可以是系统或应用程序发出的消息; 2.处理线程不断的从消息队列头中取出消息并处理. 在Android系统中,这些工作主要由Looper和Handler实现: Looper类,用于封装消…
C/S架构(Client/Server,即客户机/服务器模式)分为客户机和服务器两层:第一层是在客户机系统上结合了表示与业务逻辑,第二层是通过网络结合了数据库服务器.简单的说就是第一层是用户表示层,第二层是数据库层.客户端和服务器直接相连,这两个组成部分都承担着重要的角色. Android内核是基于Linux系统, 而Linux现存多种进程间IPC方式:管道, 消息队列, 共享内存, 套接字, 信号量, 信号.而Android用的是Binder来进行进程间通信. Binder是Android系统…
首先对ADB作简单的阐述,接下来对adb shell dumpsys SurfaceFlinger服务的dump信息的查看.以及ANR问题如何获取trace文件并简单分析. -×************************************************************** 目录: 一.ADB概述 二.ADB常用命令 (1)基本命令 (2)软件操作命令 (3)文件操作命令 (4)日志操作命令 三.dumpsys使用 四.dump SurfaceFlinger的打印信息…
译文 版本:greenDAO 3.2.2 官网:http://greenrobot.org/greendao/ GitHub:https://github.com/greenrobot/greenDAO 写在前面: 这个库极大的优化了我们使用SQLite数据库,但对SQLite数据库及其语法的掌握依旧是我们需要做的,不建议新手在没使用过Android原生的数据库API的情况下就使用这个. 简介: greenDAO 是一款开源的面向 Android 的轻便.快捷的 ORM 框架,将 Java 对象…
目录: 1.Android系统架构 2.Android类库 3.四大组件 ----------------------------------------------------------------------- 1.Android系统架构 从架构图看出架构分为五个部分,由下往上依次为: Linux Kernel:Android基于Linux提供核心系统服务,例如:安全.内存管理.进程管理.网络堆栈.驱动模型.Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体g硬件细节而为上层…
单例 发现博客园可以很好的设置自己的博客文章的展示,很开心,然后特此发一篇 其实这几种写法大家应该都会的,就权当拿来记录一下吧,以后复习巩固也比较方便. 这篇文章中的代码,来自一篇视频(我想找视频贴上,但我没找到,以后有机会看到再贴吧,实不好意思),上面有讲到,我觉得很好,择录了一些下来. 1. //懒人写法|原始 //缺点:类加载的时候就初始化实例,会拖慢应用启动速度 public class PlainOldSingleton { private static PlainOldSinglet…
题目传送门:LOJ #3184. 题意简述: 题目说得很清楚了. 题解: 首先需要了解「斐波那契数系」为何物. 按照题目中定义的斐波那契数列 \(F_n\),可以证明,每个非负整数 \(n\) 都能够以唯一方式用如下方式描述: \[n=\sum_{i=1}^{m}a_iF_i\] 其中 \(m\) 是正整数,\(a\) 是长度为 \(m\) 的 \(01\) 序列,\(a\) 中不存在相邻两项 \(a_i\) 与 \(a_{i+1}\) 同为 \(1\). 例如,当 \(m=5\) 时,有: \…
一.故事背景 现在很多人都喜欢玩文艺,特别是我身边的UI们,拍照一分钟修图半小时.就是为了能够在朋友圈显得逼格高,不过的确是挺好看的,修图的软件太多了就不多说了,而且一般都没有水印啥的.相比较短视频有一个比较有逼格的编辑工具「Vue」个人已经用了很长时间了,拍出来的视频借助强大滤镜真的很好看,显得逼格也高,更重要的是他有我最喜欢的功能就是可以添加视频背景音乐,选择自己喜欢的音乐,然后还可以编辑这段背景音乐,反正我个人觉的这个是我最喜欢用的产品了.但是好用的东西必定有它不好的地方,因为他真的很强大…
说明:调整 Firemonkey Android 显示文字有「锯齿」效果 适用:Firemonkey Android 平台 修改方法: 请将源码 FMX.FontGlyphs.Android.pas 复制到自己的工程目录里,再进行修改. // 找到这行 FPaint.setAntiAlias(True); // 抗锯齿 // 改成如下 FPaint.setAntiAlias(False); // 锯齿 效果: 上(抗锯齿)FPaint.setAntiAlias(True); 下(锯齿)FPain…
「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Android官方API文档 如何设置Android中的颜色 Android Studio如何进行调试 每日体会 参考资料 DAY-2: 学习笔记: TextView及其子类 问题整理: 关于API版本的一点疑问及解决 如何实现按钮按下和松开时为不同的图片 关于如何实现文本域中灰色的提示文本的一点思考 每日…
自从入职新公司之后就一直忙得不行,一边熟悉开发的流程,一边熟悉各种网站工具的使用,一边又在熟悉业务代码,好长时间都没有更文了. 不过新公司的 mentor(导师)还是很不错的,教给我很多东西,让我也能尽快地上手.不过最近 mentor 请假了几天,他把任务交给了我,本来想要完美地做好,但是过程中真的是一步一个坎,花了很多时间,PMO 又一直在催进度,压力真的很大.不过过了这一阶段应该就会好了. 但是呢,最近我也一直在想着如何打造一个个人IP,因为我的很多博客等平台的 ID 都不统一,有的叫「孙强…
近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借鉴.英文好的读者可读原文(链接:http://blog.udinic.com/2015/09/15/speed-up-your-app). 1.作者的规则 作者每次着手处理或寻找性能问题时,遵循下列规则: 时常检测 在更新APP前后,用测试工具软件多检测几次APP性能,可快速得到测试数据.这些数字是不会说谎的…
目测是个老问题了.随便一搜,网上各种总结过.这里不辞啰嗦,尽量简洁的备忘一下. 几个链接,有道云笔记链接,都是知乎上几个问题的摘录:阮一峰的日志,1-5 还是值得参考,但是之后的部分则混淆了 Windows Unicode 和更广泛意义上的 Unicode 的区别,前者最早是将 UCS-2 标准的编码称作 Unicode,win2k 之后则替换成了 UTF-16LE with BOM,但依然称作是 Unicode,terminology 层面的混淆极易坑人. 另外一个问题:为什么 UTF-8 不…
尊重原创作者,转载请注明出处: http://blog.csdn.net/gemmem/article/details/8920039 最近在网上看了不少Android内存管理方面的博文,但是文章大多都是就单个方面去介绍内存管理,没有能全局把握,缺乏系统性阐述,而且有些观点有误. 这样对Android内存管理进行局部性介绍,很难使读者建立系统性概念,无法真正理解内存管理,对提高系统优化和系统稳定性分析方面的能力是不够的. 我结合自己的一些思考和理解,从宏观层面上,对内存管理做一个全局性的介绍,在…
Android display架构分析(一) http://blog.csdn.net/BonderWu/archive/2010/08/12/5805961.aspx http://hi.baidu.com/leowenj/blog/item/429c2dd6ac1480c851da4b95.html 高通7系列硬件架构分析 如上图,高通7系列 Display的硬件部分主要由下面几个部分组成: A.MDP 高通MSM7200A内部模块,主要负责显示数据的转换和部分图像处理功能理,如YUV转RG…
本文由CrowHawk翻译,是Java GC调优的经典佳作. 本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三篇<How to Tune Java Garbage Collection>,本文的作者是韩国人,写在JDK 1.8发布之前,虽然有些地方有些许过时,但整体内容还是非常有价值的.译者此前也看到有人翻译了本文,发现其中有许多错漏生硬和语焉不详之处,因此决定自己翻译一份,供大家分享. 本文是"…
目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 Kernel display接口 典型应用flow分析 介绍 Surface manager(surface flinger)简介 架构分析 流程分析 根据前面的介绍,surfaceflinger作为一个server process,上层的应用程序(作为client)通过Binder方式与其进行通信.…
LOJ_2305_「NOI2017」游戏 _2-sat 题意: 给你一个长度为n的字符串S,其中第i个字符为a表示第i个地图只能用B,C两种赛车,为b表示第i个地图只能用A,C两种赛车,为c表示第i个地图只能用A,B两种赛车. 另有d(d<=8)个字符x,表示这个地图三种车都能用.有m个要求,(i,hi,j,hj)表示如果在第i场用了hi,在第j场必须用hj. 求一种满足要求的方案,若无解输出-1. 样例输入 3 1 xcc 1 1 A 2 B 样例输出 ABA 分析:先思考如果没有万能的x该怎…
Loj #3056. 「HNOI2019」多边形 小 R 与小 W 在玩游戏. 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3, \ldots , n\).最开始凸多边形中有 \(n\) 条线段,即多边形的 \(n\) 条边.这里我们用一个有序数对 \((a, b)\)(其中 \(a < b\))来表示一条端点分别为顶点 \(a, b\) 的线段. 在游戏开始之前,小 W 会进行一些操作.每次操作时,他会选中多边形的两个互异顶点,给它们之间连一条线段,并且…
「破解」Xposed强 Hook Hook Hook! 两张图片,第一张是我的微信截图,第二张是我从微信Hook出的一些类名. 一段代码,Hook这些类名出来的源码. 知道这些我们能干嘛,当然是分析(hei)别人的应用啦. 附个我写的DEMO,功能主要是抹掉APP的闪屏页,后续可能会增加其它功能,它开源,具体的你自己看吧. GitHub 我们开始吧 微信截图 微信Hook出的一些类名 一段代码 XposedBridge.hookAllMethods(ClassLoader.class, "loa…
这次聊聊「日志」. 「日志」主要指系统或者软件留下的「记录」.出自表示「航海日志」的「logbook」. 经常听说「出现问题的时候,或者程序没有安装自己预期的来运行的时候,请看看日志!」. 确实,记录了系统和软件详细运行情况的「日志」是信息的宝库,通过日志来解决问题的事例也非常多. 但事实上,「无论如何也不会看日志」的用户也有很多.理由很简单,日志的信息量非常大,全部用眼睛来看的话是非常吃力的. 而且,英语写的日志也会让英文不好的人敬而远之. 虽说「要养成用眼睛来看日志的习惯」,但实行起来却非常…
题意 题目描述 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来,更别说和别人打仗了. 在打仗之前,幽香现在面临一个非常基本的管理问题需要解决. 整个地图是一个树结构,一共有n块空地,这些空地被n-1条带权边连接起来,使得每两个点之间有一条唯一的路径将它们连接起来. 在游戏中,幽香可能在空地上增加或者减少一些军队.同时,幽香可以在一个空地上放置一个补给站. 如果补给站在点…
#2135. 「ZJOI2015」幻想乡战略游戏 链接 分析: 动态点分治,求加权重心,带修改. 考虑如果知道了一个点s,如何求答案,那么首先可以点分治的思想,求每个联通块内所有点到分治中心距离和,然后加上分治中心到s的距离. 当然有一部分会算重,就是s在i中,以fa[i]为分治中心的时候,就会算重s到i的连通块的部分,于是在记录每个联通块到此分治中心在点分树上的父节点的距离和. 那么随机从一个分治中心出发,每次遍历它周围的点,如果周围的点存在更优的情况,那么往这个方向走更优,所有就往这方向走,…
本文翻译至:http://www.itmedia.co.jp/enterprise/articles/1602/17/news065.html 大部分Linux应用程序使用的GNU C库「glibc」发现重大漏洞.美国Google和Red Hat的研究人员于2月16日公开开发的补丁. 该漏洞存在于2008年5月公布的glibc 2.9之后的版本号.据Google称,使用glibc库的「getaddrinfo()」功能时,已经明白会引起基于栈的缓存溢出漏洞.使用该功能的软件存在被攻击者控制的域名或…
https://36kr.com/p/5089139.html 无需穿戴设备,只需一个红外摄像头和+已安装好EuMotus专利软件的手提电脑 由政府主导的高达2200亿美金的健身与运动支出,15%的健身俱乐部年增长率,46%的中国年轻人正在使用健身器材与健身软件.这是美国IBIS此前发布的关于中国体育与健身产业行业报告的部分数据,36氪此前曾报道过Keep.Fittime.乐动力.超级猩猩.小熊快跑等健身产业的明星项目,他们都利用了互联网的红利改变了人们的生活.近期36氪接触了来自哈佛大学的初创…
无需任何可穿戴设备. 36氪获悉,myShape(原Shapejoy)已于近期完成千万级人民币的Pre-A轮融资,由天奇阿米巴领投,远洋集团.七熹资本以及老股东跟投.过去 myShape 曾获得元迅资本.鼎翔资本以及摩拜创始人夏一平的天使轮融资,至今myShape共获得超3000万人民币的股权融资. myShape 的定位是一家智能健身解决方案提供商,其产品是一款基于机器视觉的智能健身私教,包含了自研的3D动捕技术.姿态识别纠错算法.运动力学的专业知识以及一套强交互性的健身内容. 如下图所示:…
#2585. 「APIO2018」新家 https://loj.ac/problem/2585 分析: 线段树+二分. 首先看怎样数颜色,正常的时候,离线扫一遍右端点,每次只记录最右边的点,然后查询左端点,这里不太行.这里只需要统计是否全出现过,pre[i]为这个颜色的上一个位置,那么这也就说明了pre[i]+1这段区间没出现过,所以要求[r+1,n]这段区间的最小的pre都要大于等于l.于是这就是线段树区间查询最小值了. 注意的是,每个点的pre有多个,每个叶子节点包含一个set,把所有的值插…
开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以连接到其它网络.英特网就是一个明显的例子,就是那个你通过 ISP 连接到的网络 本篇教程有三个不同的迭代阶段,来展示如何使用 Python 构建一个 Socket 服务器和客户端 我们将以一个简单的 Socket 服务器和客户端程序来开始本教程 当你看完 API 了解例子是怎么运行起来以后,我们将会…