单例总结 - 腾讯Bugly
- Enum枚举才是最好的单例实现方式,解决了懒加载、反序列化、反射、克隆、性能等问题。需要JDK1.5以上,但大部分的Android设备都是满足需求的,所以推荐。
- 相比于静态方法、变量,单例的好处在于内存、效率、加载时机控制、业务状态。
- Application传递数据会造成数据丢失,还是乖乖的bundle、onSaveInstanceState吧。
之前有文章说过不要在Android里使用枚举,但是这个话的前提是指用枚举来代替常量,因为枚举会创建单例对象、存对象的数组,占用相比于基础类型的常量自然会占用更大。但如果是用于实现单例、业务分流,则是非常好的选择。
As性能监测工具
详细解释了每个按钮、模块的功能以及意义。
Android灵魂画家的18种混合模式
解释了PorterDuffXfermode的来源、原理以及常见的异常现象。
进行混合的时候,若想达到官方示例的效果,SRC(即将绘制的源图像)和DST(画布上的当前图像)必须尺寸相同。
Android 内存优化总结&实践
讲解了内存原理、Bitmap占用、android内存控制的技巧。并且分析了一个解决内存占用的案例,解决过程虽没有高深的技巧,但充分地体现了作者作为一个工程师的全面性,从产品体验、技术角度出发解决问题,提出最合适的解决方案。
Android 中的 Enum 到底占多少内存?该如何用?
当常量用时,还是乖乖用常量。用到面向对象思维的时候,枚举真棒!
单例实现对比
枚举最全面,解决了懒加载、反序列化、反射、克隆等问题,又简洁有效!我爱枚举!
Android Bitmap面面观
全面地讲解了Bitmap的相关知识,非常推荐阅读的文章!
Fragment生命周期
Fragment其实是嵌套在Activity中的,所以很多生命周期的方法回调顺序早于对应于activity中的方法。
canvas.drawText文本居中
x方向上mPaint.setTextAlign(Paint.Align.CENTER);y方向上int baseline = (height - fontMetrics.bottom + fontMetrics.top) / 2 - fontMetrics.top;获取基线
多线程系列之wait、notify、sleep、join、yield、synchronized关键字、ReentrantLock锁
AndroidManifest合并原理
使用tools:replace替换其他依赖库中的属性
一套图 彻底明白了“时间复杂度”
初识Android Bitmap压缩原理
- Options.inSampleSize:采用的是临近采样,值必须是2次幂,否则向下取接近的值,取2次幂个像素中最后对应一个像素,其他像素直接抛弃。
- createScaledBitmap或Matrix:采用双线性采样,通过权重计算得到最后的效果图。