摘要:前言 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃 (OOM) 等严重后果。 那什么情况下不能被回收呢? 目前 java 垃圾回收主流算法是虚拟机采用 GC Roots Tracing 算法。算法 阅读全文
posted @ 2019-11-09 15:03 huansky 阅读 (95) 评论 (0) 编辑
摘要:最近在看 Okhttp 的源码。不得不说源码设计的很巧妙,从中能学到很多。其实网上关于 Okhttp 的文章已经很多了,自己也看了很多。但是俗话说得好,好记性不如烂笔头,当你动手的时候,你会发现你在看的时候没有注意到的很多细节。 本次要分析的 Okhttp 版本是 3.8.1,在 gradle 中引 阅读全文
posted @ 2019-11-05 11:21 huansky 阅读 (277) 评论 (1) 编辑
摘要:Collections.unmodifiableList 简单来说,当我们封装了一个list,外面可能会需要获取这个list。如果直接将list返回,外界很可能会修改这个list,导致数据不稳定。那有没有解决办法呢?有的。 这样操作之后,通过 getCourses() 方法获得的 courses 是 阅读全文
posted @ 2019-10-22 11:20 huansky 阅读 (11) 评论 (0) 编辑
摘要:最接做需求的时候,碰到了 PopUpWindow,但是也没做过多了解,就是照搬别人的代码改改逻辑。后面视觉看了之后,说让我加一些动画效果,使用起来更加舒服。可是我看别人以前也没有写,于是就开始捣鼓 PopUpWindow。同时也写一篇文章记录下,后续忘了也可以查看。 相关方法解读 1)几个常用的构造 阅读全文
posted @ 2019-09-23 23:29 huansky 阅读 (172) 评论 (0) 编辑
摘要:最近在学习 极客时间Android开发高手课 老师推荐了Breakpad开源库来采集native 的crash1.为什么要使用Google Breakpad? 我们在开发过程中,Android JNI层Crash问题或者我们引用的第三方.so库文件报错,都是一个比较头疼的问题。相对Java层来说,由 阅读全文
posted @ 2019-08-03 12:13 huansky 阅读 (51) 评论 (0) 编辑
摘要:最近公司再搞中台化,自己有幸参与其中一个项目的重构,从中学到很多,也有很多感受。 1、准备工作 作为程序猿,重构代码是很常见的一件事。重构代码的目的都是为了让代码更好地适应后续的发展和变化。 当你打算重构代码的时候,你先思考下,你为啥要重构?重构势必要投入一定得时间和人力,在现有的需求的基础上,需要 阅读全文
posted @ 2019-07-14 00:01 huansky 阅读 (323) 评论 (0) 编辑
摘要:对于摄影新手小伙伴来说 ,最基本的不是怎么把相机玩出花样,而是要先学习基本的构图!构图的概念不仅适用于摄影,也适用于多种造型艺术。艺术家为了表现作品的主题思想和美感效果,在一定的空间,安排和处理人、物的关系和位置,把个别或局部的形象组成艺术的整体。 当你明确了这个概念,就可以具体学学这些基本的构图方 阅读全文
posted @ 2019-07-08 23:02 huansky 阅读 (51) 评论 (0) 编辑
摘要:1、名词解释 1.1 ISO与图片质量 ISO 是感光度的意思。胶卷有 ISO100,200 和 400 等几种,这就是感光速度不同的胶卷。ISO 感光度是感光元件对光线的敏感程度。如果用 ISO100的设定,相机 2 秒可以正确曝光的话,同样光线条件下用 ISO200 的设定只需要1秒即可,用 I 阅读全文
posted @ 2019-07-08 22:50 huansky 阅读 (96) 评论 (0) 编辑
摘要:对于 Eventbus ,相信很多 Android 小伙伴都用到过。 1、创建事件实体类 所谓的事件实体类,就是传递的事件,一个组件向另一个组件发送的信息可以储存在一个类中,该类就是一个事件,会被 EventBus 发送给订阅者。新建 MessageEvent.java: public class 阅读全文
posted @ 2019-05-27 00:15 huansky 阅读 (674) 评论 (0) 编辑
摘要:定义 适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作 主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。 何时使用: 系统需要使用现有的类,而此类的接口不符合系统的需要。 想要建立一个可以 阅读全文
posted @ 2019-02-25 08:31 huansky 阅读 (91) 评论 (0) 编辑
摘要:引子 看微信朋友圈的时候,当我们点击图片,图片会从点击的图片位置,逐渐放大,移动到正中间。退出图片查看器的时候,图片会逐渐变小,移到初始位置。对于用户来说,这是一种非常好的体验效果。 于是,自己手动撸了一个进场退场的动画。具体参见下图 下面,开始介绍实现原理。 原理解析 先对上面的动画进行分析: 图 阅读全文
posted @ 2019-02-24 20:31 huansky 阅读 (292) 评论 (0) 编辑
摘要:简介 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 意图:定义一系列的算法, 阅读全文
posted @ 2019-02-17 13:38 huansky 阅读 (160) 评论 (0) 编辑
摘要:定义 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 解释:简单来说对象 A 需要关注对象 B 的状态,根据对象 B 的不同状态来做一些调整。比如播放器的 UI 变化,会依赖当前的播放状态 阅读全文
posted @ 2019-02-16 23:13 huansky 阅读 (272) 评论 (0) 编辑
摘要:2018年马上就要结束了,在此对2018年的做个总结。 好的方面: 坏的方面: 来年希望: 就不立太多的flag了,希望坏的方面能够减少把。自己也得多多总结; 节奏很容易被打乱,主要还是没有养成习惯,还有就是意志力真的太薄弱了。 后期少关注非相关事件,多多做自己的事,把心沉下来,找回原来那个酷酷的自 阅读全文
posted @ 2018-12-23 22:15 huansky 阅读 (74) 评论 (0) 编辑
摘要:建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 介绍 意图:将一个复杂的构建与其表 阅读全文
posted @ 2018-10-13 09:55 huansky 阅读 (315) 评论 (0) 编辑