一个轻量的 Android 端日志打印记录库

地址:https://github.com/yhaolpz/PLog

PLog 即 Persistence Log,可持久化日志于文件,便于还原用户使用场景,解决异常问题。

特性:

1.mmap 方式高效写入,规避 IO 操作带来的性能消耗

2.兼容多进程并发文件写入,日志文件保存在各自的进程目录下

3.通过 zip 压缩并加密,节省上报流量,保护日志私密性

4.内置收集 Activity/Fragment 生命周期、崩溃、网络状态等常用信息:

Read More

单例的线程安全及序列化问题

饿汉方式单例到底有多“饿”?
静态内部类为什么是延迟加载的?
枚举方式单例是延迟加载的吗?
饿汉、静态内部类、枚举方式单例为什么是线程安全的?
序列化为什么会破坏单例模式?
怎么防止序列化破坏单例模式?
枚举方式单例是怎么避免序列化破坏的?

Read More

简洁明了的刘海屏适配方案

网上关于刘海屏适配的文章不少,可讲清楚的却没几篇,大多是拷贝文档、长篇大论,甚至热情的贴图告诉你什么是刘海屏,到最后你仍不确定到底是怎样的一个适配方案,才能让你的 app 真正的适配所有的刘海屏机型。

看到这篇文章你就无需再怨恨各大厂商的跟风“刘海”了,因为刘海屏的适配十分简单。

Read More

Glide 源码分析

Glide 作为一个出色的图片加载框架,对其剖析的文章数不胜数。而若像大多数文章一样常规的去分析源码就没什么新意了,本文旨在发掘一些新的或相对陌生的知识点,以完善对 Glide 的认知,涉及源码基于 v4.8.0。

主要内容:

1.磁盘缓存
2.内存缓存
3.网络请求
4.图片转换
5.感知生命周期
6.下载及预加载
7.加载图片到通知栏和应用小部件中
8.图片格式及内存优化
9.请求优先级及原理
10.缩略图使用及原理
11.展示 gif 原理
12.自定义模块及延伸
13.兼容3.x写法

Read More

Android 端音频变声方案

音频变声实质上是通过调整 PCM 数据的音调、节拍等属性,实现听感上的变化。如果是 mp3、aac 等压缩音频,则需提前解码成 PCM 数据,Android 端可以通过 MediaExtractor 及 MediaCodec 解码得到 PCM,但调整音调、节拍仅靠 Android api 就无能为力了,只能集成第三方库来实现,常见的音频处理库有 FmodSoundTouch

Read More