In Coding


唯妹子和写作不可辜负!

Android SharedPreferences 源码分析

概览 SharedPreferences(以下使用SP简称)在Android中作为一种使用简单的数据存储形式被广泛用来存储一些不需要做数据库操作的数据,比如用户配置项等。本文将从源码入手分析其实现,并据此提出一些使用中需要注意的事项。 分析 源码入口 SP是一个interface,首先我...

Android自定义Notification并没有那么简单

背景 最近需要实现一个自定义Notification的功能。网上找了找代码,解决方案就是通过RemoteViews来实现。但是在实现过程中遇到不少问题,网上也没有很好的文章描述这些问题,所以在这里做个总结,希望大家能少走点弯路。 实现 RemoteViews 自定义View 这是最基础的...

Android持续集成以及测试覆盖率可视化

背景 很多开源项目在README中会有几个小图标来表示build情况,测试覆盖率等。如 看起来感觉很牛逼的样子,其实实现起来很简单,只需几步,就能让你的开源项目也变得牛逼起来。 Travis-CI Travis-CI是一款持续集成工具,对开源项目免费。免除了Jenkins搭建服务器的...

Android去除烦人的默认闪退Dialog

背景 安卓应用闪退后总会出现一个“抱歉,App已经停止运行”的弹窗,这样的用户体验并不好。很多大厂的App都去除了这个弹窗,因此本文主要介绍如何去除默认闪退弹窗,以及在闪退时做一些必要的善后工作。 UnCaughtExceptionHandler UnCaughtExceptionHand...

Android随机对象生成器的设计与实现

目标 当完成一个新的Feature的时候,需要对其进行测试。但是由于服务器还没有部署该功能,或者单元测试的限制,往往需要程序员自己去伪造一些数据。但是手工伪造数据往往效率不高并且没有代表性。因此希望能够实现一个对象生成器,生成对象并往里面填充随机值。 项目地址 rog 设计要点 对象生成器...

如何产生一个随机的[0, n)范围内的Short值

背景 最近在做一个Java的随机对象生成器。需要随机产生一些在[0, n)范围内的short值。 坑 很多人可能会说,这有什么难的,我刚学编程的时候就会了。然后给出下面代码。 short value = (short) (new Random().nextInt(n)); 看起来...

浅析ReactiveX的多播——实现安卓双击检测遇到的坑

背景 今天需要实现一个双击检测功能,以前的实现方式是自己记录上次点击时间与本次比对,如果小于门槛值,则发出双击事件。不过自从入了Rx的坑之后,凡事都喜欢用Rx的思想思考问题。于是上Github找找代码,还真找到一段,虽然是Kotlin的一段错误的代码,翻译成Java如下:(注:这段代码是有问题...

Android路由框架设计与实现

背景 我们知道传统的网站开发框架一般支持用户设置路由表,如Django。而在Android开发中,我们打开页面的方式主要是startActivity()。使用startActivity()的缺点是需要打开的那个Activity的类已经存在,否则无法通过编译,但是在协同开发中,这往往是无法得到满...