YOU'VE MADE A BRAVE DECISION, WELCOME.

每一个不曾起舞的日子都是对生命的辜负。

博客迁移

迁移提示由于各种开源博客折腾起来太过闹心,停更了好长一段时间,慢慢的转用了 Notion 这个工具。后面如果有比较完备的博客工具,会逐步更新,目前是以 Notion 更新为主。 Jiang’s Notion

Read More...


Postman 的实用功能[TOC] 前言我是一个 Android 开发工程师,日常开发中最免不了的就是使用 Postman 进行网络调试,Postman 也很方便,URL、Header 都能设置。下面来分享几个有用的功能,来看看有没有你没用过的。 基础使用初次打开 Postman,就会显示上图这样的页面。需要测试一个请求的时候,新开一个 Tab,填写 URL、选择请求方式,还要按照接口的要求设置响应的 Header、Params,

Read More...


一篇文章引发的思考前几天我写了一篇关于 Gradle 的文章,从 Gradle 的版本讲到了 Gradle 插件的制作。得到了一些人的认可,没想到今天日常阅读鸿洋的公众号推文也是 Gradle 相关的。看完之后,我觉得我写的远不如推送文章的内容丰富,比如他把 setting.gradle 中的配置、使用讲的很清楚,还有他介绍了很多 Gradle 的 API,有关于 Project 也有 Task的。 总之,我看完之后感觉我写的好像根本

Read More...


Gradle 学习之路

Gradle 学习之路 前言虽然从开始用 Android Studio 开发 Android 应用就一直在接触 Gradle,但对 Gradle 始终都有一些陌生感,表现在日常的开发中就是不敢随便改 build.gradle 文件,一旦 sync 出错,只会复制错误找谷歌,可是解决方案也不一定能够完美解决自己的问题。还有就是不熟悉 Gradle 的时候,也不能很好的理解整个项目的配置,毕竟 Gradle 是 Android 项目的构建脚

Read More...


从 notifyDataSetChanged 到 DiffUtilDiffUtil 是 RecyclerView 中自带的一个计算数据集差异性的组件,其内部还提供了对 RecyclerView 进行局部刷新的 API。以往我们对 RecyclerView 的刷新,大多会采用 notifyDataSetChanged,而这种刷新方式,会造成 RecyclerView#Adapter 调用 List#size 次的 onCreateView

Read More...


2019 年终总结

2019 年终总结前两天被楼下的两棵树圈粉了,图片来给你们看一下。 起初我觉得冬天不好,万物凋零,然后发现这两棵树看起来比一年中任何时候都好看。 我是 17 年 11 月真正入行做 Android 开发的,到现在刚好 2 年多点,找工作的时候大家都说不好找,经济寒冬。兴许是老天想赏我口饭吃,不怎么费力气就找到了一份还不错的工作。 从那时起就一直有人在说经济不景气之类的话,我也没深刻的感受到,更多时候觉得跟自己没多大关系。 也不知道是

Read More...


Navigation 之 Fragment 切换本篇是有关 Navigation 的第二篇,如有对 Navigation 不了解的朋友请先阅读来学一波 Navigation。 多次执行 onCreateView在上一篇中,我们利用 Navigation 与 BottomNavigationView 做出了一个有三个 Tab 的页面,分别是 Feed、Timer、Mine,这三个 Fragment 都是只在当前页面显示各自的名称。 现在

Read More...


从注解到 ButterKnife一直好奇 BufferKnife 内部是怎么做到 findViewById 的,今天就好好看看它。 12345@BindView(R.id.tv_hello) TextView tvHello;@Override public void onCreate(Bundle savedInstanceState) { //...... ButterKnife.bind(this);

Read More...


设计模式:观察者模式 本文是设计模式系列中的第三篇,上一篇是 单例模式。 观察者模式是使用频率最高的设计模式之一。是对象之间的一种一对多的依赖关系,使得当一个对象「被观察者」发生改变,其相关依赖对象「观察者」皆收到通知,并自动更新。 比如,我们注册某个网站的时,默认订阅了它的促销活动邮件及账户安全邮件。当促销活动发生时,所有用户都会收到与促销相关的邮件,当公司信息发生泄漏,需要用户更改密码时,向所有用户发送更改密码的邮件提示。 在这

Read More...


关于 TDD

关于 TDD有一种编程思想叫测试驱动开发,也就是 TDD。在这个过程中,最重要的就是编写测试代码,而且不是写完了业务逻辑之后才去写,是先写测试,然后根据需求,一步步的完善测试用例,最终写出有效的业务逻辑代码。 主讲师熊节老师提供了两个准则: 没有失败的测试就不许写代码; 只许写恰好让测试通过的代码; 开课后的第一个作业是 FizzBuzz。题目很简单,从 1 到 100,能被 3 整除的数打印 Fizz,能被 5 整除的数打

Read More...