- 博客(59)
- 资源 (8)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 屏幕绘制机制及硬件加速
前言硬件加速CPU / GPU结构对比OpenGLAndroid 的图形组件画笔画纸画板合成及显示CPU / GPU 绘制过程软件绘制硬件加速视图构建前言开发手机应用最主要的两个点是 1.处理用户屏幕触碰输入 2.界面效果展示(包含动画和各种反馈) ,但是在早期的 Android 并不是那么尽人意,给用户的感觉就是卡顿,系统处理图形能力...
2019-03-13 10:14:51
16739
8
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 性能优化(一) —— 启动优化提升60%
应用启动速度视觉优化视觉优化——启动主题优化1.默认情况应用启动速度一个应用App的启动速度能够影响用户的首次体验,启动速度较慢(感官上)的应用可能导致用户再次开启App的意图下降,或者卸载放弃该应用程序。本文将从两个方向优化应用的启动速度 : 视觉体验优化 代码逻辑优化视觉优化谷歌开发文档应用程序启动有三种状态,每种状态都会...
2018-08-25 18:48:23
47323
12
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 屏幕刷新机制
前言View的工作流程ChoreographerFrameDisplayEventReceiverVSYNCTriple Buffer前言在上一篇 View的工作流程 的博客中,分析了ViewRootImpl类中应用窗口 measure,layout 和 draw 的过程。今天这篇文章探索从ViewRootImpl 到屏幕的刷新机制之间的渊源。Vi...
2018-07-09 00:16:33
4437
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android View的工作流程
ViewRootImpl在整个View体系中起着中流砥柱的作用,它是控件树正常运作的动力所在,并且有如下几个重要功能点。 - 连接WindowManager和DecorView的纽带。 - 向DecorView派发输入事件 - 完成View的绘制(measure,layout,draw)。 - 负责与WMS交互通讯,调整窗口大小及布局。
2017-12-02 19:41:20
6170
12
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android Window 机制探索
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布Window的概念setContentViewinstallDecorgenerateLayoutWindow的类型应用窗口子窗口系统窗口Window的内部机制(Activity)Window的创建过程Window的添加过程Window的tokenActivity的attach...
2017-11-16 21:01:01
14068
21
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 消息机制——你真的了解Handler?
前言QuestionsLooper 死循环为什么不会导致应用卡死会消耗大量资源吗主线程的消息循环机制是什么ActivityThread 的动力是什么前言Android的消息机制主要是指Handler的运行机制,对于大家来说Handler已经是轻车熟路了,可是真的掌握了Handler?本文主要通过几个问题围绕着Handler展开讲解。 看该篇文章可能需要掌握一定
2017-10-17 16:47:27
27893
19
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android Launcher 启动 Activity 的工作过程
前言通过上一篇文章(Binder之应用层总结与分析)可以了解到进程间通讯的一个大致情况,像今天要提到的Activity启动过程,也是以Binder为通讯方式。系统对这个工作过程做了很多封装,使得启动一个Activity变得十分简单。这看似简单的背后,实际上是Activity与ActivityManagerService之间多次通讯的结果。 阅读该篇文章建议配合源码一起食用,味道更佳。Launche
2017-10-03 20:46:19
40466
19
原创 透视HTTP协议(四) —— HTTP头部字段有哪些
1. HTTP 常见的数据类型2. HTTP 常见的压缩有哪些3. HTTP 是如何分块传输4. HTTP 如何断点传输5. 长连接6. 重定向7. 缓存
2019-09-28 16:54:22
2480
原创 透视HTTP协议(三) —— HTTP请求过程和结构
1. 网址输入后点击回车键发生了什么2. HTTP的报文结构有哪些3. HTTP 的响应状态码有哪些
2019-09-28 15:55:14
745
原创 透视HTTP协议(二) —— HTTP相关的协议
1. 什么是 DNS2. DNS 与 HTTP 有什么联系3. URI 什么,URL 又是什么4. HTTP 有哪些代理5. TCP/IP 分为哪几层6. OSI 网络分层又是什么
2019-09-28 15:42:33
1238
2
原创 透视HTTP协议(一) —— HTTP是什么
1. HTTP 是什么2. 万维网 WWW 包含哪些3. HTTP 的版本有哪些4. 和 HTTP 相关的还有哪些协议5. HTTP 有哪些特点,什么是 HTTP 经久不衰的原因
2019-09-28 14:59:28
2451
原创 Android 相见恨晚的高效编码规范
本篇文章是基于《Effective Java 3》以及阿里出版的《码出高效—Java开发手册》的总结文章。
2019-04-20 21:51:38
472
原创 《为什么精英都是时间控》
文章目录《为什么精英都是时间控》提高专注力15 · 45 · 90排除杂念时间限制黄金时间—早晨早晨清醒术晨起2~3小时最清醒,专注力最高(做专注性工作)早晨拒绝多余和多种资讯,排除杂念上班前的固定时间—自我投资(1.1的365次方)上班最初30分钟最为重要(进入工作状态)午后—重启术为下午储备能量夜晚运动&睡眠离开公司,就不要再想工作的事情运动睡眠周末时间创造术把握现在,不留遗憾并行工作...
2019-03-22 08:02:00
600
4
原创 Android 性能优化(二) —— 启动优化实战
继上一篇的 Android 启动优化(一) 小试牛刀(优化预览窗口)之后,我们再进一步优化应用。
2019-03-01 10:39:33
1256
原创 腾讯 Xlog 上手指南
文章目录关于Xlog下载及编译使用初始化混淆查看DIY关于Xloghttps://github.com/Tencent/mars访问 mars 仓库,将代码压缩包下载到本地.下载的过程中可以初步了解 mars 是何方神圣 : https://github.com/Tencent/mars/wiki以及 Xlog 的性能和基准 : https://github.com/Tencent/mar...
2019-02-28 23:49:23
5685
原创 Android Library 上传到 JCenter 之图文总结
前言本篇博客暂先粗略的总结一下 Jcenter 发布的过程和坑。注册刚要跨出第一步就绊倒在注册这一步。公司试用版和个人免费版注册地址:https://bintray.com/切记一定要选择右边这个 Sign Up Here 按钮,不管你是否用 github 第三方登录,并且注册的邮箱不能使用网易和腾讯邮箱!发布点击上图的 Add New Repository 按钮,创建存放...
2018-10-24 18:00:03
487
原创 Java设计模式——装饰者模式(Decorator Pattern)
装饰者模式装饰者模式也称为包装模式(Wrapper Pattern),属于结构型设计模式。该模式对客户端透明的方式来动态的扩展对象,(对扩展开放,对修改关闭)同时该模式也是继承关系的一种替代方法之一。总之就是动态的给对象添加一些额外的职责,类似钢铁侠可以组装不同武器。结构类图抽象组件(Component) :定义装饰方法的规范被装饰者(ConcreteCo...
2018-09-08 16:33:45
16504
1
原创 算法 —— 排序 —— 优先队列
优先队列二叉堆优先队列【Priority Queue】首先声明一下,优先队列是基于堆的完全二叉树,它和队列的概念无关。(它并不是队列,而是树)并且,优先队列最重要的操作就是: 删除最大元素和插入元素,所以我们把精力集中在这两点上。(本文以最大堆为主讲述)二叉堆...
2018-06-02 19:40:28
6145
原创 算法 —— 排序 —— 快速排序
快速排序基本思想切分排序算法算法改进三向切分(改进重复元素排序)快速排序快速排序是应用最广泛的排序算法了。原因是实现简单,且在一般应用中比其他排序算法要快得多。快速排序内循环比大多数排序算法都要短小,这意味着它无论是在理论上还是在实际中都要更快。但是它的缺点是非常脆弱,在实现中要非常小心才能避免低劣的性能。在归并排序这篇文章中有讲解到“分治策略”,该策略一...
2018-05-01 23:20:02
690
原创 算法 —— 排序 —— 归并排序
“分治”策略归并自顶向下(递归)自底向上(遍历)“分治”策略 分治,字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。在计算机科学中,分治法就是运用分治思想的一种很重要的算法。分治法是很多高效算法的基础,如排序算法(快速排序,归并排序...
2018-04-15 19:38:05
491
原创 算法 —— 排序 —— 初级排序
前言选择排序插入排序选择排序和插入排序对比希尔排序引入 hh 的取值希尔排序的性能前言算法,在计算机领域都是一个永恒的话题。尤其是当今这个信息科技高速飞跃的时代,对算法的深入学习和挖掘可以说是炽手可热。不说宏观的,为了更好的工作和生活,深入浅出学习算法。选择排序选择排序是一种最简单的入门排序算法每次排序都会遍历数组中还未排序的元素...
2018-04-01 14:57:51
703
原创 2018年android面试分享和学习总结
概述成果和收获面试分享AndroidJVMJava 线程Java 集合网络数据结构和算法写在最后概述回顾历史不忘初心 展望未来继续前行。17年零零碎碎也捣鼓了好一阵子,从Android 自定义View开始,到源码分析,设计模式,再到JVM的了解以及最近看完的Java线程和并发以及集合。对Android体系有了一个大概了认识和了解。成果和...
2018-03-18 17:53:40
7526
18
原创 Java —— 多态与分派
多态分派静态分派重载静态分派 之 字面量动态分派重写单分派与多分派虚方法表总结多态 Java具备面向对象的3个基本特征 : 继承,封装(get / set)和多态。 多态 : 继承,重写(Override),向上转型(Human h=new Man())三大必要条件。方法重载 : 同一个方法名,参数或者类型不同。
2018-01-23 12:46:02
810
原创 Java —— 运行时栈帧结构
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。概述栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构。它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。
2018-01-21 16:06:06
25029
22
原创 Java —— 类加载器和双亲委派
类加载器双亲委派模型自定义类加载器类加载器上一篇文章介绍了Java 类加载机制,文中说过,类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现。也就是说应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称 : “类加载器” 。 jvm并没有指明需要从Class文件中获取,也可以通过ZIP包、网络、动态代理
2018-01-18 18:57:03
2060
原创 Java —— 类加载机制
概述类的生命周期加载验证准备解析初始化卸载概述 代码编译是将本地机器码变为字节码,这一过程是存储格式发展的一小步,却是编程语言发展的一大步。虚拟机加载完Class文件,最终形成可以被虚拟机直接使用的Java类型。这一个过程也就是类的加载机制。 Java编译器可以将Java代码(我们平时码的源代码)编译为存储字节码的Class文件(二进制字节
2018-01-16 22:43:41
1392
原创 Java垃圾回收(三)—— 图解内存分配策略
经过上两篇垃圾回收的文章我们可以了解到垃圾回收的运作原理。 Java垃圾回收机制 Java垃圾收集器Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决两个问题 : 给对象分配内存。回收分配给对象的内存。那么这篇文章就来了解以下内存分配策略。 对象的内存分配,可以说主要就是在堆上分配内存。 对象主要分配在新生代的Eden区上,如果启动了本地线
2018-01-14 21:56:50
1053
原创 Java垃圾回收(二)—— 垃圾收集器
概述Stop The World枚举GC Roots安全点安全区域垃圾收集器吞吐量GC的名词并行和并发Serial 收集器单线程垃圾收集新老ParNew 收集器Serial 升级版新Parallel 收集器吞吐量优先新老CMS 收集器停顿时间优先老G1收集器垃圾区域Region优先整个堆垃圾收集器组合概述在我们上一篇文章垃圾回收机制中讲述到了
2018-01-14 12:11:12
1275
原创 Java垃圾回收(一)—— 回收机制
垃圾回收哪些内存需要回收什么时候回收如何回收对象回收判定引用计数算法可达性分析算法GC Roots的对象对象之引用垃圾回收算法标记 - 清除算法复制算法标记 - 整理算法分代收集算法新生代老年代分代收集算法工作流程为什么不是一块Survivor空间而是两块为什么Eden空间这么大而Survivor空间要分的少一点 Java
2018-01-11 19:03:54
1501
2
原创 Java对象的内存布局、访问定位和创建
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,外面的人想进去,墙里面的人却想出来。
2018-01-08 14:39:45
1211
原创 Java——常量池探索
什么是常量? 对于这个问题,可能很多人都可以脱口而出 : 用final修饰的变量是常量 ,或者是在编译时期定义好的字符串。(字符串常量)但是这种说法是不严谨的
2018-01-06 16:05:09
2120
2
原创 Java——String对象探索
String 对于日常代码来说是一个使用频率很高的对象,因为它的一些使用数据和基本数据类型有些相似,所以很容易把String 混淆为基本数据类型。
2018-01-03 22:17:00
1951
3
原创 Java内存区域——堆,栈,方法区等
运行时数据区域程序计数器Java虚拟机栈栈帧本地方法栈堆方法区运行时常量池拓展运行时数据区域jdk1.7中, Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 程序计数器1. 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看做是当前线程所执行的字节码
2018-01-02 16:15:48
10764
6
原创 Android Binder之应用层总结与分析
概述通过前两篇( Android 深入浅出AIDL(一) Android 深入浅出AIDL(二))文章对AIDL进行运用与分析,对于Android跨进程通讯有了不少的了解,深入分析AIDL通讯过程,我们发现跨进程的主导元素是Binder,但是这个Binder是Android中很重要又很复杂的概念,本文就不深入到底层和驱动层去研究,有兴趣的童鞋可以滑动到文章底部,有详细的Binder深入探究的文章推荐
2017-09-25 21:48:34
11524
13
AIDLDemo项目,包含客户端和服务端
2017-09-24
AIDL进程间通讯demo
2017-09-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人