Volley目前看来是一个很老的框架了,很早之前我也在项目中使用过,但是当时没有去深入了解其原理。后来OkHttp出来之后,便迁移到了Okhttp。Okhttp以他的高效闻名,而大多数文章也仅仅只是一笔带过,许多人也只是跟风效仿并不知道其中为何高效之处。而同为优秀的热门框架,为何Okhttp更被大家所推荐,更多人使用?这是我重新研究Volley的原因,既然性能有优劣,那一定是需要对比。所以我们起码要了解不同框架的原理和实现思路,这样才能知道为什么这个框架更加好更加适合我们的业务,是否需要使用这个框架,这是对技术选型判断的依据,也是我写这个文章和后面分析okhttp的目的。
okhttp3请求头中含中文报错原因及解决方案
最近在负责做一个图片加载模块,测试过程中反馈一个问题:有两个测试设备上加载不了图片。我就纳闷了,我就一个加载图片模块怎么还跟机型适配扯上关系了。然后查了下日志异常如下:
Android注解实践——运行时注解框架
之前写了一篇编译期注解的文章,里面有提到注解作用的三种时期,SOURCE是会被编译器丢弃的注解,CLASS是在编译器保存,RUNTIME是在运行期保留。网上大多的资料讲的也都是编译期的注解,因为这是一种不影响效率的方式,也是很多热门开源库采用的方式。但是有些时候编译期注解并不能帮我们解决碰到的问题,这个时候如果了解运行时注解,也许就能解决问题。基础的概念前一篇已经讲过,这里就不再介绍了。
Android注解实践——打造编译时注解框架
最近一直在做项目的重构工作,因为是做组件化,正好看到阿里云开源一个路由框架ARouter。看了一下源码,发现是项目主要也是运用到了编译时注解的技术。联想到之前最早用过的ButterKnife,到现在的Retrofit等等各种主流的开源框架,其实都有使用到这项强大技术,之前也只是简单了解了一下原理,这次就想自己也写一个这种框架,搞清楚实现原理。
首先,注解处理器(Anonotation Processor)分为编译时(Compile time)注解和运行时(Runtime)通过反射机制运行的注解,因为编译期注解实际上是生成.java文件辅助我们实现功能,所以不会有效率上的损耗,上面提到的开源框架也都是基于这种基础实现的。
这篇文章只涉及编译时注解(类似于ButterKnife),教大家如何打造一个简单的编译时注解框架,如何调试,和一些在实践中碰到的问题。
坑爹的Android 6.0 startDiscovery蓝牙搜索不到设备问题
最近在做重构项目的过程中,重构蓝牙扫描模块的时候。发现调用扫描方法的时候,根本没有返回搜索到的设备。开始以为是厂商sdk的bug,或者是自己新写的代码问题。然后没有用厂商sdk,自己写代码来扫描,琢磨了半天看日志,debug,依然没找到问题。后来突然想到是不是权限的问题,之前项目的targetSdkVersion 22,新的项目是23,然后Android 6.0有一套新的权限机制,敏感权限需要申请,感觉可能是权限问题导致的。
Android在应用退出后发送请求解决方案
Android Studio 2.0异常
今天在导入同事的项目完成后没报错,运行的时候却报了一段错误,自己弄了会儿都没解决。
1 | :app:transformClassesWithInstantRunForDebug FAILED |
后来经过搜索发现解决方案,禁用2.0的快速启动新功能,按照下图取消勾选即可。