最近在做App启动优化和卡顿优化的时候涉及到统计方法耗时,使用插桩的方式能够比较方便的解决使用代码硬编码的工作量。函数插桩还可以实现其他的功能,如无埋点统计上报、轻量级AOP等。
Toast BadToken和权限问题
Toast作为Android的提示工具,在日常开发中大量使用。Android系统针对窗口权限一直在优化,在Android 7.1版本出现crash问题。
LeakCanary源码解析
LeakCanary是square公司发布的一款检测Activity内存泄漏的工具。项目地址
VirtualAPK加载插件资源
解决插件资源生效问题,首先需要看看系统创建资源
VirtualAPK插件化简介和学习计划
VirtualAPK(下面简称VA)是滴滴开源的插件化项目,这里有VirtualAPK的详细介绍。插件化方面也一直没有大公司开源, DroidPlugin虽然功能强大,但是hook的东西比较多,而且宿主和插件互相独立,和平时的业务需求有较多差异。VirtualAPK介绍中也有几个开源库之前的简单对比。
Retrofit搭配Rx实践
最近在重构公司的网络层,准备使用最近比较火的组合,采用Retrofit搭配Rx,下面是基础部分一些实践和心得。
Gradle插件开发
Android Studio上的Android项目是通过Gradle构建的,Gradle插件是使用Groovy进行开发的,而Groovy是可以兼容Java,功能强大,兼容性好,所以学习一些基本的Gradle的知识是很有必要的。学习插件开发最开始的目的是实现一个多渠道打包(美团提出的方案),可后来发现Java中对Apk的操作有很多的问题,使用Python没有问题,使用Python又不方便与Gradle系统集成,所以项目就搁置了。
自定义列表多图片ViewGroup
在列表中展示图片是非常常用的功能,微信、微博、qq都有同样的功能, 如果针对不同数量的图片采用不同的type将会有很多类型,会造成列表卡顿,RecyclerView中嵌套RecyclerView也是一种非常不好的方案。所以需要自定义ViewGroup解决这个问题。
Fresco浅析
Fresco是facebook出的图片加载库,功能强大,学习成本比较高。支持基本的图片加载、Gif图片加载、JPEG图片的渐进加载(和电脑浏览器一样)、显示图片加载进度。相对于Glide的主要优点是支持图片渐进加载,显示图片加载进度,在Api19以下通过匿名共享内存缓存图片。本文章主要分析Fresco不同的地方。
synchronized和Lock解析
Java中提供了synchronized和lock两种锁机制保证线程安全。