记一次安卓BUG修复的过程
2016-05-17 00:00
218 查看
https://github.com/liuz430524/BBasic
项目重构完成后,发现循环动画时偶发卡顿,首先怀疑是不是有while循环或者互斥量死锁,检查了一遍代码没有发现,之后用傻办法,将涉及到的函数运行消耗时间计时输出,终于发现问题出现在showpic和stretchbltpageEx中,再次分析,确定了造成卡顿的罪魁祸首是Bitmap.createBitmap(Bitmap source, int, int, int, int, Pain),但重构之前代码貌似运行正常,遂怀疑是否是API更改致函数内部改变,查看源码发现真的有改变,但是并不太影响的样子,于是认真想了想,发现不需要调用重量级的createBitmap,直接用canvas的drawBitmap(Bitmap source, Rect, Rect, Paint)也可,而且更好,于是马上更改,果如所料,结果令人满意,正常运行,卡顿消失,且速度又快了一些。
幸好出了这个问题,不然一个使用频率这么高的函数,太浪费系统资源了。
项目重构完成后,发现循环动画时偶发卡顿,首先怀疑是不是有while循环或者互斥量死锁,检查了一遍代码没有发现,之后用傻办法,将涉及到的函数运行消耗时间计时输出,终于发现问题出现在showpic和stretchbltpageEx中,再次分析,确定了造成卡顿的罪魁祸首是Bitmap.createBitmap(Bitmap source, int, int, int, int, Pain),但重构之前代码貌似运行正常,遂怀疑是否是API更改致函数内部改变,查看源码发现真的有改变,但是并不太影响的样子,于是认真想了想,发现不需要调用重量级的createBitmap,直接用canvas的drawBitmap(Bitmap source, Rect, Rect, Paint)也可,而且更好,于是马上更改,果如所料,结果令人满意,正常运行,卡顿消失,且速度又快了一些。
幸好出了这个问题,不然一个使用频率这么高的函数,太浪费系统资源了。
相关文章推荐
- mybatis 延迟加载
- Navicat 教程:如何进行搜索筛选
- 解析 Navicat for PostgreSQL 数据库组设计器
- Passware Kit和AOPR哪个更厉害?
- jsp servlet 实现记住我功能实现
- web配置规范
- Nginx配置
- C++对python模块进行扩展
- activiti自定义流程之整合(一):整体环境配置
- Spring MVC 原理 - DispatcherServlet调用完整过程(下)
- 分享 做javaEE项目中常用的工具类中的方法!
- AngularJs 第一个自定义指令编写
- HTML5之FileReader的使用
- 手把手实现Java权限(1)-Shiro介绍
- java中super和this
- 利用静态服务提升读取Activiti流程图的性能
- Java过滤任意(script,html,style)标签符,返回纯文本--封装类
- 微信公众帐号开发教程第2篇-开发模式启用及接口配置
- MyBatis 中XML映射配置文件
- java项目WEB-INF目录作用