SpirytusZ's Blog

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

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

Gson原理分析

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

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

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

Lua语言学习笔记

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

2018年度总结

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

记一次AIDL的学习与实践

1. 前言终于考完试了hhh,终于有时间更新博客了。正好之前自学跨进程编程,写个博文记录一下。 2. Android中的多进程在Android中,默认情况下,应用中的组件是运行在同一个进程的。我们可以在AndroidManifest.xml中使用android:process属性来为四大组件指定运行的进程。比如对于Service: 1234<service ... andro......

关于深度优先搜索的一点小心得

1. 前言上周刷了20来道LeetCode的题,总结出了一些关于深度优先搜索的小小的心得,于是有了这篇博客。这次的总体思路是: 深度优先搜索算法的工作过程 如何使用深度优先搜索算法来进行遍历 两个有趣的问题 深度优先搜索算法和循环的关系 那我们开始吧。 2. 深度优先搜索深度优先搜索(Deep First Search, DFS)是一种先序遍历,先遇到的节点先访问,然后以这个节点为起......

既然要单例,那就单例到底

1. 前言最近忙着实习和秋招,挤不出时间来写博客。正好现在中秋放假,有时间了,就把我之前想了好久的都写出来吧。这次的主题是有关单例的。 2. 从最简单的单例说起单例,本质就是内存中只有一个实例(严格来说不是这样的,我们只需保证主内存中只有一个实例)。基于此,单例是好实现的: 1234567891011121314public class Singleton { priva......

可拖拽的FloatingActionButton

前言FloatingActionButton是Google力推的一个Material Design控件。最近做的一个项目,需要实现一个可以左右滑动,松手回到原位的FloatingActionButton。研究了大半天就写出来了,于是写写这片博客记录一下。 MotionEvent的事件当我们点击一个view,或者拖动一个view到处滑动时,都会产生一个MotionEvent事件。 当我们......

设计模式——观察者模式

前言嗯,观察者模式在Android开发中还是挺常用的,比如说Adapter数据更新后RecyclerView的刷新,以及四大组件的Broadcast等等。接下来本文将简单谈谈设计模式中的观察和模式。为了有更好的食用体验,本文会结合一个简单的例子,让你更好的理解观察者模式。 一、观察者模式先来看看定义:定义对象之间的一对多依赖关系,当一个对象改变状态时,它的所有依赖对象都会自动获得通知。e......