SpirytusZ's Blog

Android View体系 - 绘制篇

前言 View的绘制流程主要解决的是画什么的问题。在View树这一结构下,每个View是如何解决画什么的问题的?本文将从源码的角度,尝试理解View树的绘制流程。 术语 下文可能会出现这些术语,为了让读者更方便理解,先打通这几个术语: 硬件绘制 所谓的硬件绘制(硬件加速),指的是绘制的操作交给GPU,绘制的结果存储在显存中。在API 14及其以后默认开启硬件绘制。 软件绘制 所谓的软......

Android View体系 - 布局篇

前言 在上篇文章Android View体系 - 测量篇中,我们知道:每个View都会接收来自父View的MeasureSpec来进行测量,在确保自身能够独立完成测量逻辑的同时,也能向下推导,促使其子View的测量。 与测量流程同为View三大流程的布局流程,是如何独立完成自身的布局流程,又能向下推导,促使孩子节点的布局的?本文将围绕着View布局流程的源码,尝试探索View的布局流程。 ......

Android View体系 - 测量篇

前言 View的三大流程之一:测量要解决的问题就是画多大的问题。我们都知道,Android的View结构是一个多叉树,在这么一个数据结构之下,对于每个节点View,它们是如何独立解决画多大这个问题呢? 本文将从源码的角度,分析View的测量代码,尝试探索View是如何解决画多大的问题。 View的测量 从上篇文章:Android View体系 - performTraversals篇可以......

Android View体系 - performTraversals篇

前言 上面文章:Android View体系 - 启动篇中,我们知道View的三大流程都是performTraversals方法调用的。 performTraversals作为View三大流程的入口方法,只要子View执行了requestLayout,就必然会调到ViewRootImpl的performTraversals。如此重要的方法,除了协调测量、布局和绘制这三大流程以外,perfo......

Android View体系 - 启动篇

前言 点击Launcher的应用图标,到应用的主页展示到屏幕的过程中,Android系统是如何将画面渲染出来的? 本文将分析应用启动时View相关的代码,理解启动期间View的相关代码,理解View、Window、WindowManager、ViewRootImpl和Activity之间的关系。 启动 我们都知道Android应用进程的入口是ActivityThread的main方法。在......

浅谈虚拟框架VirtualApp原理 & 检测方案

前言 VirtualApp是一款运行于Android系统的虚拟框架,允许在其中创建虚拟空间,并在这个虚拟空间中运行其他应用,并对该应用具有完全的控制能力。 本文将配合VirtualApp的源码,简单介绍VirtualApp免安装启动apk的Activity的基本原理,以及相关的检测方案。 名词约定 名词 简称 备注 VirtualApp VA - VActivityMa......

Gson原理分析

1. 前言 Gson是一个Java平台的Json库,用于json的序列化和反序列化。 实践发现对于大的json字符串转换成实例的时间性能并不是很好。 本文将从源码的角度探索Gson反序列化json耗时的原因,并给出大致的解决方案。 2. 太长不看 Gson反序列化耗时的原因有三(影响大小递减): 默认的TypeAdapter会反射遍历类及其超类的所有字段,并生成一个Map表; 默认的......

记Android层执行Lua脚本的一次实践

0. 前言     最近一直在写Lua脚本,有时候出了问题,不知道是Lua层的问题,还是上游的问题,不知道从何下手。于是我学习了一点C/C和JNI,把整个解析Lua脚本包、执行Lua脚本的流程全部都读了一遍。熟悉了一遍之后,就萌生了自己封一个Android跑Lua脚本库的想法。于是就有这篇博文。C/C和Kotlin我都不熟,所以这次我主要用这两种语言来写(所以会很Java Style)。 ......

Lua语言学习笔记

0. 前言 最近学习了Lua语言,记录一下自己觉得对几个重要概念的学习过程。 1. Table table是Lua语言的一个重要的数据结构。它很像一个Map,我们可以通过给出一个key来获得对应的value。并且,table的key可以是除nil以外的任意类型。看代码: 123456789101112131415161718local tab = {}tab.a =......

2018年度总结

时光如梭,转眼2018年的最后一天已经到来,过了今天就是2019年了,就总结一下吧。 上半年基本上都是咸鱼的状态,忙第一学位的课程,忙第二学位的课程,周一到周日基本天天满课,技术的学习与学位的取舍,我选择了学位,毕竟做好现阶段最重要的工作还是很重要的,所以上半年就放松了技术的学习,看我的GitHub的Contribution就知道啦。 重要的事情都发生在下半年,我也开始思考。 关于实习,......