alighters

程序、写作、人生

浅析EventBus 3.0实现思想

| Comments

最近接触了EventBus,也看了一些源码分析的文章。在此就不再细述其代码的实现细节,主要针对其的设计思想做一些记录,也是自己思考的过程。同时本文尽量以较少的代码来将其主要设计思想说的透彻明白,不会针对细节做过多深入。

基本的事件发布订阅的实现

一般情况下,事件发布订阅机制都是跟观察者模式紧密相连。事件的发布中心都会维持着一组当前的观察者(也可叫做订阅者),这里称之为事件总线,(观察者的注册/取消则对应着在这组数据中进行添加和删除)。另外被观察者(也可叫发布者)则通过发出事件,事件总线拿到该事件,则在观察者列表中根据事件来查找相应的事件观察者,紧接着执行观察者的行为即可。对应一个简单的事件总线图如下:

Android编译期代码生成之apt实践入门

| Comments

现在 Android 主流库中使用 apt 的越来越多,如Dagger2,ButterKnife,DBflow等。不研究一下其怎么玩的,心里实在是不舒服斯基,所以就有了这篇apt代码简单生成的文章。文章的末尾,会附上一些关于注解的基础知识,有兴趣的童鞋可以再去看看。

程序员加班之说-谈效率

| Comments

加班

最近听人谈起程序员的加班问题,忙到那么晚,真有那么多事情要做么?当然每个人遇到的情况不一样,给到的答案也是不一样的,这里针对个人所遇到的情况,谈谈对加班的一些看法。

Rxjava+Retrofit 实现全局过期 Token 自动刷新

| Comments

我们在做客户端的设计实现底层网络架构时候,常常不可避免的一个问题:token的有效验证,若是token过期,则需要先执行refresh token的操作,若是执行refresh token也无效,则需要用户再执行登陆的过程中;而这个refresh token的操作,按理来说,对用户是不可见的。这样的话,我们应该是怎么解决这个问题呢?

本文是采用RxJava + Retrofit来实现网络请求的封装的,则主要讨论这种情况的实现;一般的写法,则主要是在回调中,做一些拦截的判断,这里就不叙述了。

SimpleArrayMap源码解析

| Comments

本文SimpleArrayMap源码分析是基于support v4 23.3.0版本的。 另外,因ArrayMap涉及的多是算法知识,而主要的思想比较简单,所以本文会主要以代码为主,细讲其每个实现。

为什么要引入ArrayMap?

在Android设备上,因为App的内存限制,出现OOM的错误,导致开发者不得不关注一些底层数据结构以及去分析App的内存使用情况。提及数据结构,HashMap是我们最经常使用到的,而我们是否会注意其实现的细节以及有什么优缺点呢?

Octopress搭建博客之路1

| Comments

最近,因之前的博客是通过hexo搭建的,而通过hexo搭建的样式,有点烂大街的赶脚。另外,想对它做一些改动,看着它的代码有点头大。然后,就接触了Octopress,稍微了解了一下,就决定把我的博客迁到这个上面了。原因有二:1.是基于Ruby开发的,正是我目前在学的语言;2.相对于hexo提供更多的功能。废话不多说,开始搭建第一篇Octopress博客吧。

Dagger2深入理解

| Comments

最近,看到一些小伙伴想要入门Dagger2,加之最近刚经历了Dagger2的水深火热,在这里针对Dagger2中不同的注解方式,会生成怎样的代码,结合其生成的不同代码,来帮助大家做一些深入的理解。

一键收藏至Github

| Comments

因本人比较喜欢对一些技术文章进行收藏,并进行整理。像Pocket、Evernote这些工具都可以进行离线收藏,都是很不错的工具,但我就想把这些喜欢的文章,进行收藏整理至github,并且一键提交(顺便还可以刷刷Github的活跃度),同时省了自己的时间,只需要在固定的时间,对这些进行整理即可。