一个由SharedPreferences引起的ANR
0x01 起因商店每次发布新版本之后,崩溃统计平台排行第一的总是一个奇怪的ANR,他的主线程卡在了这里: 1234567891011121314151617181920212223242526272829DALVIK THREADS (108):"main" prio=5 tid=1 Waiting | group="main" sCount=1 d...
Android性能优化之使用AOP结合Systrace查找性能短板
0x01 什么是AOP?怎么使用Systrace?AOP意即面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。我在Android上使用AOP主要是为了做性能检测,Systrace默认没有针对所有方法进行跟踪,如果需要针对特殊方法进行跟踪,那么需要在java代码里面插入begin和endTrace等方法。这样不仅破坏了原有代码结构,而且难以对所有方法做追踪。Aspe...
面试记录
最近准备面试,想把一些面试过程中遇到的问题记录下来,以便自己以后可以总结经验。 0x01 18年8月8日电话面试这次面试暴露了我准备不充分的问题,面试官很有水平,会针对我的简历提出一些我意想不到的问题。 你的简历上写了“一个硬核技术Boy”,如何理解“硬核”这两个字? 听你介绍,你的工作主要是对性能进行优化,那么你是如何进行性能优化的呢? 你把一些主要的方法论的问题都说了,但是有没有一种一...
Glide、Picasso性能对比报告
好久不见,Glide和Picasso都是目前网络上比较常见的一些图片加载框架,下面就他们的一些差异和优缺点进行分析。本文主要讲述以下几点: 图片加载API的区别 图片的缓存策略区别 互相的优劣势 本文对比的是Picasso2.5.2和Glide3.7.0 0x01图片加载API的区别 对于最普通的Url加载图片到ImageView中,两者的写法分别是 Glide: 1234...
Android的小笔记
最近在知乎上关注了这个问题:Android 开发中,有哪些坑需要注意? 里面有许多Android开发大神所讲的各种小点,对我来说非常有帮助。我在开发过程中有时候也会遇到一些小坑,因此在这里也贴一下。(也许就是自己用错了?(笑:)) - 自定义View 由于没对Painter设置线条Width,导致在canvas里面drawLine()没有显示效果(也可能是因为屏幕dpi太高?) surf...
RxJava使用小记录
写在前面这几天在看技术博客的时候,看到了经常出现的rxjava教程。因为自己之前比较浮躁,因此都没有时间静下心来仔细看,这次终于比较完整的把这篇文章看完了,于是打算在以后的项目中,尝试着使用RxJava进行开发,学习它那种“流水线”式的开发方式。我尝试了RxJava和Retrofit的结合,目前看起来效果还不错。继续加油!随着我对Rxjava的使用,这篇文章会慢慢补充。算不上什么正式的文章,...
翻译:在Android上正确地使用style来配置你的View(而不陷入抓狂状态)(未完成!)
refer:http://blog.danlew.net/2014/11/19/styles-on-android/ 我们总是很难在Android上正确的使用Style。始终会有一种潜在的挫败感。代码的结构很容易因此变得一团糟糕。你已经有多少次想要改变某些View的Style时却担心无意中破坏了某些东西? 在Android平台上开发了多年之后,我有一些关于如何正确使用style的强烈建议...
实现一个简单的九键拼音匹配算法(比较随性)
好久没写博文了,因为最近都在忙课设的事情。 说起课设,我最近在做的一个APP有一个需求,是做一个类似系统拨号软件的功能,可以实现9键拼音筛选列表。话不多说,看图: 需求是对拨号窗口的九键进行拼音筛选,需要设计一种算法来筛选条目。应用类似手机的通讯录。 方法给出的queryString为一串数字,通过拨号键盘给出的。也可能掺杂着#*等电话符号。假设User类有getPinyin()和get...
学习笔记(一)之Java强引用、弱引用、虚引用、软引用
前言最近一直在为自己的Java知识充电,看了一些好书,决定把自己读到的觉得有用的知识拿出来分享一下,于是有了这个系列。 什么是强引用其实强引用在我们写Java代码非常常用,例如下面这一句语句就创建了一个强引用: Map<String,String> map = new Hashmap(); 上面这个语句的作用是,创建一个Map对象,并且将其强引用至map上,这个引用是如此...
在Github上部署Hexo博客
为什么从jekyll-now换成hexo事情得从我在几天前收到的邮件说起,Github提示我Github Pages服务即将升级到Jekyll 3.0,而且到2016年5月1号将只支持kramdown引擎,所以我按照提示升级之后,发现自己之前发布的文章都出现了#号不能正常渲染的错误,于是我踏上了更换博客框架的漫漫长路。(渲染出错其实是我自己的原因,这是后话~无奈) Hexo好处都有啥...