咕咚

因为热爱

博客更新日志随想

今天终于有时间可以更新一下博客了。 之前,一次偶然的机会,在网上看到黄玄的博客,也就是现在自己博客的风格,第一眼便喜欢上了这种风格,不论是大背景的 Header 还是侧边栏的设计,都是自己非常喜欢的设计,但是苦于自己前端能力薄弱,自从去年选择了一个 Jekyll 的主题后,能做的也只是一些简单的修建,如果要按照自己的想法去设计一些个性化的 feature 还是太难了。直到遇到这个博客风格,...

读书清单

该篇博客用于记录自己读过的书。 关于读书,其实自己一直有很多话想说。从小没能养成一个好的读书习惯,到后来,尤其是工作之后,发现读书真的是一件特别有意义的事。 现在我正在把以前漏掉的掉下的书读起来,灵魂和脚本总要有一个在路上。 这里面会有不少技术相关的书籍,每一本书自己会简单写几句点评。其实读完每一本书写一篇读书笔记也是未尝不可的,而且会是一个非常好的读书习惯。 Java 相关 Ef...

ButterKnife 使用介绍

首先说点关于这篇文章的题外话。 公司项目重构,我建议老大使用 ButterKnife,因为自己使用了很久,而且自己跟周边的同事演示了一下 ButterKnife 的功能,都觉得很赞,所以就想自己要不彻底调研一次 ButterKnife,包括用法以及源码。 最终我给组长的结果是 这东西可用,也没有什么太大的性能问题,但是最终还是被老大给 kill 掉了,后来也没有理论过老大,好吧,那就继续...

使用 RxJava 重构一段判断逻辑

这么晚了我还在给咕咚翻译加在线发音功能!!还好有音乐作陪… 其实实现发音很简单,金山的 API 支持单词发音。访问 http://dict-co.iciba.com/api/dictionary.php?type=json&w=nice&key=3BE8E8ACA43FDA088E52EC05FA8FA203 即可在返回单词解释的同时,返回单词的发音 URL,如下所示,自...

使用 CheckStyle 检查代码

前言 最近在看廖祜秋的下拉刷新项目 android-Ultra-Pull-To-Refresh,就在今天做了一些精简操作后,准备加入项目准备使用时,发现 lib 根目录下有一个 checkstyle.xml 文件,很好奇它是干什么的,后来 Google 后,原来这东西可以用来检查代码,随即查询了一些资料,把它用了起来,下面简单记录下。 用途 先不说如何配置,先说它有什么用。 Andr...

Handler 之 ThreadLocal 相关

在上一篇文章Handler 之 源码解析中介绍 Handler 与 Looper 的关系时,半路出现了 ThreadLocal 这个类,他是什么呢,本想在 Handler 源码解析一文一起阐述了, 但是觉得这样篇幅太长,不好,况且他又是一个相对独立的概念,这里就把它单独拿出来,结合任玉刚的Android的消息机制之ThreadLocal的工作原理博文,为自己总结归纳下 ThreadLocal...

Handler 之 源码解析

上一篇博客Handler 之 初识及简单应用中介绍了 Handler 的作用,以及 Handler 的基本用法,同时也详细介绍了为什么子线程不能更新 UI 的原因,但是因为篇幅原因,所以对 Handler 的内部机制并没有展开叙述。这篇文章就从 Handler 开始解析与之相关的源码,从而更好的理解 Handler 以及 Looper MessageQueue。 Handler 机制 写...

Handler 之 初识及简单应用

这篇文章主要讲解和记录自己对 Handler 的理解。因为一开始接触 Android 就接触到了 Handler,所以对 handler 的了解应该比较多,加上项目中在消息传递以及异步控制方面都要用到 Handler。自己也不止一遍的看过 Handler 源码,不过每次看的时候都能明白,但是时间久了,就很容易忘记。所以这次就有了这个 Handler 系列。从 Handler 的使用场景,到具...

关于咕咚翻译

咕咚翻译是自己最近开发的一个实现『划词翻译』功能的 Android 应用 ,可能是目前 Android 市场上翻译效率最高的一款应用。 示意图 项目地址 目前咕咚翻译已经开源到了 Github ,咕咚翻译,欢迎 star ,如果有 bug 或者更好的意见可以提 issue. 下载 如果想第一时间体验,可通过以下方式下载。 酷安市场 Fir 缘起 自己经常在手机上会阅...

跨进程数据共享问题及解决方案

最近在开发咕咚翻译时,在偏好设置的过程中,出现了一个莫名其妙的 bug,在 A 进程中设置偏好设置后,B 进程不能及时访问到 A 进程中设置的数据,今晚终于得到解决,随即做一次简单的记录。 咕咚翻译 这里先简单介绍下咕咚翻译这个 App,如名字所言,它主要的功能是翻译,不过相比其他的翻译软件,他的翻译效率更高。 因为它实现了手机端的”划词翻译”,只要你在手机上复制了任何英文内容,他都会监...

关于个人项目

作品展示画廊,有图有真相。链接 关于个人项目 从一开始工作,自己就是个比较爱动手的开发者,喜欢将自己的想法变(编)成(程)具体可以看见的东西,做东西的过程也是一个学习的过程。 因为自己的作品可以随意加入各种最新的知识点,所以这也是一个很好的体验新技术的方法. 并且自己做的东西,还可能帮助到别人,给别人带来便利,何乐而不为。 尽管我知道,做一个好用的东西,其实还是挺不容易的,因为好...

RxJava 在 AppPlus 中的应用

RxJava 已经出来很长一段时间了,国内也已经有很多公司在使用,与此同时,有不少优秀的开发者也不断的在开源社区分享自己对 RxJava 的使用理解,而且这个过程中也产出了不少优秀的 RxJava 资料。自己通过这些资料以及一些开源项目也在不断的学习 RxJava, 从一开始的 GankDaily 项目中蹒跚学步,到 AppPlus 中的大量实战,自己对 RxJava 的应用也变得熟练了起来...

Android 过度绘制介绍及优化 Tip

Android 中的过度绘制是指同一个像素被绘制多次,从绘制性能角度讲,同一像素点被绘制的次数当然越少越好,这样有利于减轻 GPU 的工作压力,事实上,在具体开发过程中 ,不可避免的可能会出现过度绘制,这里,Android 系统本身在开发者选项里已经提供了一个选项开关 Debug GPU overdraw(调试 GPU 过度绘制),用于检测 App 的过度绘制, 只要打开这个开关,App 界...

Android性能优化典范 - 第1季 阅读笔记

该文章是自己在阅读 Android性能优化典范-第一季 时的读书笔记,Android性能优化典范主要讲了Android的渲染机制、内存和GC以及电量优化方面相关的内容,因为内容比较庞杂,加上一些知识点需要花心思去理解,所以在阅读的时候,顺便记录一下自己的阅读理解。 原文 Android性能优化典范-第一季 笔记条目 1、Android 系统每隔 16ms 发出 VSYNC 信号,触发硬...

《火星救援》有感

忙里偷闲,在 Acfun 这个网站看了一部电影 - 火星救援,看之前,对这个电影没什么特别大的期待, 不过因为主演是马特达蒙,所以今天就选择了这部电影。 第一次看他的电影是 谍影重重,自己也是从这部电影开始,喜欢上他。 依旧记得大学时,连续三个周末,看完了谍影重重系列,每周一部,不敢贪多,当时只觉得两个小时太短了! 当时因为太喜欢,特意还裁剪下其中的剧照(恩,当时应该用的是QQ影音自带...

再见 2015 ,你好 2016 ~

这篇文章是我的2015年终总结。去年就曾想过写一篇自己的2014年终总结,后来想过几天再写,然后一晃已经是2015年末了, 时间就是这么快。我觉得今年一定要抽时间总结下,在梳理得与失的同时,也是对自己一年里,做的所有事的一个回忆和反思。 这一年 这一年发生了很多事,不论生活方面,还是工作方面,都经历了比去年更多的事。 生活方面 其实,这一年应该从媳妇跟我一起坐上来北京的列车开始。到北...

为什么开发了 AppPlus

AppPlus 是自己2015年七月份开始做的一个小产品,它是一个主要用Android用户间传送Apk文件、管理手机应用的工具软件。 目前已开源,开源地址 为什么要做这个软件 一、我想用最少的步骤打开最近运行的应用详情界面 因为是开发者的缘故,我经常需要清理应用缓存数据,一般的做法时,找到系统设置->应用管理->找到对应的应用->打开应用详情界面,然后清理数据, ...

利用 Gradle Task 查看远程依赖库的本地存储路径

这篇文章主要分享一个主题,如何在 AndroidStudio 中利用 gradle 查看自己项目中引入的三方依赖库的本地缓存路径。相信一些同学会对这个 话题感兴趣的。 问题 自从使用 AndroidStudio + Gradle 开始项目开发,我们已经用到了很多 gradle 带来的特性,比如要在项目中使用三方 Lib , 我们再也不需要像 eclipse 时代,需要我们手动下载对应的 ...

开源协议小风波

今天无意间在做项目的过程中,因为没有遵守开源协议,导致了一个小误会,尽管已经跟drakeet同学致歉,但后来还是觉得有必要把事情再梳理一遍,让更多的开发者注重一下开源协议。 一开始在微博看到了@drakeet 同学开源了一个项目,叫 MeiZhi,一个干货集中营的 unofficial 客户端,客户端用于在手机端更好的显示技术干货信息,因为自己平时也比较关注技术干货,自己也就开始使用。 ...

MVP 模式在 GankDaily 中的应用

最近完成了一个干货客户端 GankDaily , 一个基于干货集中营的手机客户端,整个客户端借鉴 drakeet 的妹纸应用。但是在原项目的基础上, 自己使用 MVP 模式对项目进行重构,让代码结构进一步解耦,使业务逻辑和视图表现层相分离,从而让代码逻辑变得更简单, 以下就整理了自己在重构项目过程中对 MVP 这种模式的理解以及项目中如何实施 MVP 的模式。 关于MVP MVP 是 M...