Android 图片内存优化

Bitmap 如何计算一张 Bitmap 在内存中的大小呢? 1 bitmap.getByteCount(); 一张图片占用的内存和什么有关? 图片本身的像素尺寸。 加载的格式,ARGB_8888 每像素占4 Byte, 比 RGB_565 大一倍。 所放文件夹和手机屏幕dpi的比例,比...

快速理解DPI和PPI,不再傻傻分不清!

原文出自[卡米雷特的小站(kamilet.cn)],原文链接: http://www.kamilet.cn/dpi-and-ppi-ultimate/ 前言 72DPI 的图片拿去打印会糊吗? 手机拍出来的照片是多少 DPI ? PS 里显示72 PPI 为什么另存为JPG就变成96 DPI 了? 类似的问题层出不穷。本站很多篇文章都讲到了 DPI 和 PPI 的问题,...

Android 反调试与代码保护

没有绝对的安全,只能做到相对更难破解而已。 Proguard: 对代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),检查(Veirfy)。 isDebuggerConnected(): 1 2 3 4 //用来检查此刻是否有调试挂载到程序上。 if(android.os.Debug.isDebuggerConnected()){ android....

HTTPS 真的就安全了么?

非对称加密 公钥是公开的。私钥是私有的。公钥加密只能用私钥解密,私钥加密只能用公钥解密。 其他人使用我的公钥加密,自己用私钥解密,这叫“加密”。 自己用私钥加密,其他人使用我的公钥解密,这叫“签名”。 在 3 的基础上,如果这对非对称密钥是由权威的“证书中心”颁发的,就叫“数字证书”。 数字证书 证书机构对该证书的数字签名(Signature Algorith...

Java 小技巧

技巧1:Lombok 为 POJO 自动生成 getter / setter / toString 等方法。 使用例子: 1 2 3 4 5 6 7 8 9 10 11 @ToString(of = {"name","age"}, exclude={"age"}) @Getter(value = AccessLevel.PUBLIC) @Set...

Java 内存垃圾回收

阅读原文:咱们从头到尾说一次 Java 垃圾回收 怎么定义垃圾 引用计数算法 定义:通过在对象头中分配一个空间来保存该对象被引用的次数(Reference Count)。 缺点:不能解决循环引用的问题。 可达性分析算法 定义:所有和 GC Roots 之间没有直接或间接引用链的对象,均为垃圾。 有哪些 GC Roots呢? ...

Java 陷阱

陷阱1:equals 避免空指针: 1 2 String str = null; if("value".equals(str)){...} 进一步: 1 Objects.equals(str,"value"); 陷阱2: float, BigDecemal float 不能使用 == 来比较大小...

Android 工具使用小技巧

技巧1:加速 Gradle 构建 清除构建缓存,强制刷新依赖库: ./gradlew --refresh-dependencies 查看Gradle性能:./gradlew assembleDebug -profile 使用缓存 1 2 3 4 5 6 // gradle.properties: org.gradle.cac...

Android 开发小技巧

技巧1:tools:node=”remove” WorkManager 初始化是这样的 1 2 3 4 5 6 7 8 9 10 11 12 WorkManager.initialize(context,configuration) public static void initialize(Context context, Configuration c...

Jvm内存模型 & Java内存模型

Jvm 内存模型 PC 寄存器(程序计数器) 程序计数器是一块较小的内存空间,可以把它看作当前线程正在执行的字节码的行号指示器。 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。 特点:较小的存储空间;线程私有;随线程创建而创建,结束而死亡。 Java虚拟机栈 Java虚拟机栈会为每一个即将运行的Java方...