晓晨DEV的技术博客

专注于移动端开发

Effective Java 读书笔记(4)—  通过私有构造器强化不可实例化能力

Effective Java 读书笔记

通过私有构造器强化不可实例化能力 public class UtilityClass { // Suppress default constructor for noninstantiability //错误是为了防止有人调用构造函数 private UtilityClass() { throw new AssertionError(); ...

Effective Java 读书笔记(3)— 单例

Effective Java 读书笔记

单例 利用反射可能从单例类中再生成一个对象,这里可以加上保护机制在生成第二个对象的时候报错 反序列化可能会再生成一个对象,如果没有正确处理 枚举可能是最好的单例 public enum Elvis{ INSTANCE; public void something(); }

Effective Java 读书笔记(2)— 遇到多个构造器参数考虑使用构建器

Effective Java 读书笔记

遇到多个构造器参数考虑使用构建器 对于需要多参数构建的对象使用 Builder 模式 public class NutritionFact3 { //均是final,不可变 private final int servingSize;// required private final int servings;// required privat...

Effective Java 读书笔记(1)— 静态工厂方法代替构造器

Effective Java 读书笔记

静态工厂方法代替构造器 优势: 有名称 不必在每次调用时候创建一个新的对象 可以返回原类型的任何子类型的对象 创建参数化类型实例的时候使代码更加简洁 缺点: 类如果不含公有或者受保护的构造器就不能实例化 和其他构造方法没有区别 === 静态工厂方法就是给类加上一个静态方法; public final class Boolean implemen...

自动初始化你的库(译)

小技巧 自动初始化你的库

原文地址: https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html Firebase 介绍了他们在 Android 初始化的一些做法 如果你在使用 Firebase 你会发现你可能不用写任何初始化的代码。你可以直接使用你需要的对象。使用 crash reporting ...

降低 gradle 内存又减少构建时间(译)

设置好参数加快构建时间

原文地址: https://medium.com/@skaliakoudas/decreasing-build-times-by-decreasing-gradle-memory-requirements-7fcafc6d98ea#.sh4fpd6s3 这篇文章讲解了调整我们的 gradle 内存设置,不但减小了内存占用同时又提高了一些性能。 gradle 插件 2.1...

吊炸天的项目 — Lottie学习研究(入门篇)

Aribnb推出的复杂动画解决方案

Lottie — 快速生成复杂 Android 、iOS 、React Native 动画的解决方案。 今年10月1的时候我开了个AnimJsonView的项目,旨在用json来描述Android动画,考虑用 React Native 实现个编辑器,来快速生成 ANDROID 动画,后来因为一直忙忙忙就搁置了,直到看到了 lottie 才感叹大厂果然 NB ,虽然思路差不多都是用 J...

关于Java单例的理解

单例模式很简单但是你都懂了吗?

毕业那年找工作,在学校面试的时候,有一个题目是让我写个单例,当时心想这玩意不是手到擒来分分钟写了2个,不知不觉工作了2年再回头看这个最简单的单例模式,还是有很多东西的,网上多数讲解并没有讲清楚。 1.饿汉单例 最简单的单例,私有化构造方法,提供一个get方法,内部搞一个实例。 我是线程安全的,但是我没有实现懒加载! public class Singleton { privat...

RecyclerView缓存和onBindViewHolder的第三个参数

recyclerview的一点点优化

RecyclerView 有三级缓存(也有说成四级的)其中二级缓存是开发者设定的 ViewCacheExtension 缓存帮助类。 背景:我们有一个列表,列表每个item都有一个下载按钮,下载的应用状态变化,对于条目的按钮也应该发生变化,而且为了效率需要局部刷新。 问题出现:为了列表流畅设置了 setItemViewCacheSize 然后当某个 ViewItem 出现在界面上的时候 ...

晓晨Android组重开声明

对自己的反思和激励

大家好,我是晓晨DEV,是一个刚刚毕业一年多的Android开发者,现在在魅族做开发工程师。 个人博客:http://tanfujun.com/ Github:https://github.com/cctanfujun 这个公众号是我在进入公司实习的时候申请的,运营了一段时间后发现即使在Android 开发方面自身也有很多的不足,所以就停止了运营这个公众号。 这一年我觉得自身也有很大...