smallSohoSolo

smallSohoSolo Blog

Android简易路由框架MobRouter开发

Android Router介绍 Android Router即是Android路由工具,通过使用路由工具,可以做到通过一句话进行跳转,无需知道具体的Activity类。 context.startActivity(context,XXX.class); //常见的跳转 MobRouter.build("image_activity").go(); //使用路由框架跳转 通过这种路...

[译]使用ASM Core API修改类

2. 章节 这个章节说明了如何使用Core ASM API 构造并且修改编译Java字节码。开始首先介绍字节码的编译,之后指出相应的ASM接口,组件和工具去构造和修改她们,并且有很多实用的例子。方法,注解和泛型的内容在下一章节说明。 2.1. 结构 2.1.1. 概览 字节码的结构是很简单的。并不像一个编译好的Application,字节码保留了结构信息和大多数的源代码符号。事实上,...

startActivity探索

本篇博客代码基于aosp发表日期最新的repo master分支(API 25)。可能会伴随很多源码,所以略显枯燥,源码已经被我手动精简带上注释。 如何启动Activity? startActivity(new Intent(this,XXX.class)); 使用startActivity可以很轻易的启动一个Activity,可以在Activity中使用,可以在Service中使...

Android单元测试实践

为什么要引入单元测试 一般来说我们都不会写单元测试,为什么呢?因为要写多余的代码,而且还要进行一些学习,入门有些门槛,所以一般在工程中都不会写单元测试。那么为什么我决定要写单元测试。因为两个条件 我很懒:我每次改完都很懒测试 我很怂:我要是不测试,没有一次通过的信心,于是我还是要测试。。。 这篇博客看完并不会让你完全掌握单元测试,但是会给你在单元测试的开始有一个好的指引 ...

McImage插件解析

介绍 McImage插件传送门:https://github.com/Aweme/McImage McImage是一个对资源中的png和jpg图片进行压缩和图片大小检查的插件,通过pngquant算法对图片资源进行压缩,并且可以设置图片最大大小来在打包时候对所有图片资源进行检查。如果发现大于设置的大小,默认为1M,那么就会中断打包,并且提示是哪张图 与tinypng的比较 McImag...

Android自定义Gradle插件

最近各种热修复框架开源,其中使用instant run方式的框架是目前兼容性最好的,典型的有蘑菇街的Aceso和美团的Robust。两者都是使用ASM在编译的时候进行方法级别的修改来达到在运行时热修复。具体原理不详谈,本篇文章主要讲述使用插件在编译时候进行处理。 基础流程:Gradle会将Java代码打包成class,我们可以在打包成class之后插入我们的插件,在插件中使用asm来进行对...

AspectJ从入门到实用

AspectJ是Eclipse出品的Aop框架,可以帮助我们进行很方便的Aop编程。目前最新版是AspectJ 1.8.10 官网链接:http://www.eclipse.org/aspectj/ 另附带Aop(面向切面编程)科普:什么是面向切面编程AOP? 优点 无侵入性 学习成本低 支持各种格式,并且很成熟 缺点 会增加方法数 在动态修改字节码方面...

Android内存泄漏小谈

Android内存泄漏是一个经常要遇到的问题,程序在内存泄漏的时候很容易导致OOM的发生。那么如何查找内存泄漏和避免内存泄漏就是需要知晓的一个问题,首先我们需要知道一些基础知识。 Java的四种引用 强引用: 强引用是Java中最普通的引用,随意创建一个对象然后在其他的地方引用一下,就是强引用,强引用的对象Java宁愿OOM也不会回收他 软引用: 软引用是比强引用弱的引用,在Java ...

Go简明教程

最近有需求做后端,技术选型选择主力开发语言,于是乎从Python,Go,Java,PHP中做选择,经过测试和调研 Go,天生高并发支持,语法简洁,C系列有语言基础 占用内存和CPU资源小,创业公司机器紧张哈 效率超然 通过wrk测试,递归测试,字符串拼接测试 Go完美胜出,无论是内存占用,还是处理速度,都位列第一。编译型的语言就是强 233 IDE选择 强烈推荐In...

Android IPC终极指南(二、使用Messenger进行通信)

此篇文章是看完的Android开发艺术的个人总结,摘抄了很多书上的语句,特此说明 IPC学习比较难,我们由浅入深,上一节我们了解了多进程的基础知识,这一节我们尝试进行多进程通信。 武器01:Messenger Messenger可以翻译为信使,通过它可以在不同的进程中传递Message对象,使用比较辩解,他是一种轻量级的IPC方案,底层是用AIDL实现的,他对AIDL进行了封装...