DQ Blog

Never leave that until tomorrow , which you can do today .

Android点击屏幕空白区域隐藏软键盘

写在前面 在Activity中重写dispatchTouchEvent方法,可写在BaseActivity中,继承即可。但是有个缺陷:Fragment暂时没能实现。具体代码如下: @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTIO...

RxBus的使用

写在前面 由于项目中有使用到Rx系列,这个时候如果还使用EventBus,这就导致了过多使用第三方库的问题,而改造后的RxBus完全能替代掉EventBus。 实现效果 用法与EventBus完全一致 功能也与EventBus一样 代码使用 一、post:前面说了用法与EventBus一致 @OnClick(R.id.text) public vo...

Okhttp源码浅析

写在前面 写这篇文章完全是让自己对Okhttp进一步的理解,同时也希望帮助对这个库感到迷茫的童鞋。有不对的地方希望大牛们指正。 做过Android的想必对Okhttp很熟悉,没错,它是一个网络请求库,但是值得我们注意的是,这个库和以前我们使用的Volley和android-async-http等库的级别不一样,Volley和android-async-http是基于HttpClien...

腾讯Bugly热修复

写在前面: 在平时开发中,当稳定版本开发出来后,我们要做的就是发布到各个app市场。但是我们发出去的版本存在着bug,这时我们只能修改后又重新发版,想想国内N多个平台,每次发版都想吐。好在有热补丁这以技术的诞生,热补丁解决了项目有bug而不用重新发版,而是通过打补丁的方式修复我们的bug,一下就记录腾讯基于Tinker的Bugly热修复。 接下来:就开始实现嘛 第一步:添加依赖...

Gradle对项目统一管理及打包命名

写在前面: 在平时做项目的时候,我们时常会需要根据不同的环境,使用相对应的变量,比如:像我们就有正式环境、开发测试环境(本地),将来获取还会有测试服务器。而每个环境访问的服务器是不一样的,还有我们还可能在不用的环境或者版本上使用不同的资源,对应这些情况我们不可能每次打包的时候都要手动去修改代码,然后Gradle强大的功能可以解决我们的困扰。 Gradle的配置如下: 一、统一管理: 在项...

ButterKnife 8.0以上版本使用

写在前面 不会偷懒的程序员不是好程序员。平时我们的写布局的时候,无休止的写findViewById(),简直烦不胜烦,但是有了ButterKnife,从此就可以告别这繁琐的工作了。并且配合上Android ButterKnife Zelezny,简直连手写@BindView(R.id.title)TextView title和事件监听都不用了,这么好用又不影响性能的东西不去使用真的对不起自己...

认识反射

写在前面 在理解反射时,也要了解Java虚拟机的相关知识。 首先Java虚拟机有一个运行时数据区,分为方法区、堆区和栈区,每个类都会产生一个Class对象,就是保存在.class文件,所有的类都是在第一次使用时,动态加载到jvm中,然后提取class中的类型信息加载到方法区中; 反射就是程序在运行时用自我描述、自我修改的一种能力。可以通过反射的api得到Java虚拟机...

installation failed with message INSTALL_CANCELED

写在前面: 有时候我们在用真机跑一个项目的时候,可能会遇到各种奇葩的问题。以下是用小米的的时候遇到到的一个坑 问题所在:开发者选项中的usb安装未打开。 解决问题:usb安装打开即可。 写在最后,学习的过程是痛苦的,但是知识的获取也是巨大的。 写在最后: 继续发现。。。

Otto的简单使用

第一次写文章,只为了把平时用到的知识记录保存下来,同时也希望能对又需要的学者有帮助。 今天刚好用了大名鼎鼎的Otto,Otto是一个事件总线,可以替代Intent、Handler和BroadcastReceiver 在四大组件之间传递消息,而且开销极小,同时能让我们的代码更加优雅,还有一个大大的好处就是可以将消息发送者和接收者解耦。好了,说了这么多,那就让我们来看看Otto到底是个什么东东...