收集Android实际开发中的bug总结与解决方法(第三节)
来源:互联网 发布:linux打tar包 编辑:程序博客网 时间:2024/05/22 11:48
因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。
然而,可以改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source,
decodeStream最大的不同之处在于其直接调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap,从而节省了java层的空间。
否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。
使用BitmapFactory.Options设置inSampleSize就可以缩小图片。属性值inSampleSize表示缩略图大小为原始图片大小的几分之一。如果知道图片的像素过大,就可以对其进行缩小。
那么如何才知道图片过大呢?
方法是:使用BitmapFactory.Options设置inJustDecodeBounds为true后,再使用decodeFile()等方法,并不会真正的分配空间,即解码出来的Bitmap为null,但是可计算出原始图片的宽度和高度,即options.outWidth和 options.outHeight。通过这两个值,就可以知道图片是否过大了。在实际项目中,先获取图片真实的宽度和高度,然后判断是否需要跑缩小。如果不需要缩小,设置inSampleSize的值为 1。如果需要缩小,则动态计算并设置inSampleSize的值,对图片进行缩小。需要注意的是,在下次使用BitmapFactory的 decodeFile()等方法实例化Bitmap对象前,别忘记将opts.inJustDecodeBound设置回false。否则获取的 bitmap对象还是null。
BUG 、使用actionProvider时出现的问题
bug复现:
解决方案:
//import android.support.v4.view.ActionProvider;
import
android.view.ActionProvider;
换一种import的方式即可。tmd,这就是一个坑。
BUG : 背景墙设置失效
采用XUTILS的图片缓存技术做了个小米电视的app,加了一个配置图片仓库和图片数量的对话框。如果配置完,程序重启什么都ok,但是一旦关机就恢复初始状态,原因是自己
在写程序的时候大意了。
1 String tmpBucketName = LocalDataDeal.readBucketNameFromLocalData(); 2 String tmpBucketNum = LocalDataDeal.readBucketNumFromLocalData(); 3 String tmpBucketWaterMark = LocalDataDeal.readBucketWaterMarkFromLocalData(); 4
5 if(tmpBucketName != null && tmpBucketName != "" && tmpBucketNum != "" && tmpBucketNum != null && tmpBucketWaterMark != null && tmpBuckeWaterMark != "" ) 6 { 7 if(Integer.parseInt(tmpBucketNum) > 1) 8 { 9 QiNiuBucketName = tmpBucketName;10 QiNiuBucketNumber = Integer.parseInt(tmpBucketNum);11 QiNiuBucketWaterMark = tmpBucketWaterMark;12 }13 QiNiuBucketName = LocalDataDeal.readBucketNameFromLocalData();14 }
问题出在了对第五行对waterMark的处理,因为允许设置是否显示水印,而水印不存在的时候就是tmpBuckerWaterMark为null的时候,所以对于没有设置水印的仓库配置,是永远不会显示的。
还有一点,就是在对字符串比较的时候,除了和null对比可以直接用==符号,其余比较都得用equal方法进行对比。
- 收集Android实际开发中的bug总结与解决方法(第三节)
- 收集Android实际开发中的bug总结与解决方法(第一节)
- 收集Android实际开发中的bug总结与解决方法(第二节)
- Android实际开发中的bug总结与解决方法(一)
- Android实际开发中的bug总结与解决方法(二)
- Android实际开发中的bug总结与解决方法(三)
- Android实际开发中的bug总结与解决方法(一)
- Java 第三节 总结
- 第三节总结
- android第三节
- Android全格式播放器开发(第三节ffmpeg android编译)
- Android开发bug总结
- Android基础总结.doc(第三节、ListView和内容提供者)
- Android开发之bug收集(持续更新...)
- Oracle第三节课总结
- android学习总结(二)----MVC在实际中的应用
- Fragment实际开发中的总结(一)
- 第3章 Android Dalvik虚拟机 第三节(上)
- 数据库分页
- 【CSS优先级】多个CSS样式设置同样属性时,画面到底会用哪一个CSS(important并非唯一方法)
- 图像的梯度
- python中的reduce函数
- mysql group by 与order by 一起使用
- 收集Android实际开发中的bug总结与解决方法(第三节)
- ES6/ES2015要点总结
- 数据库连接池的原理
- ETL构建企业级数据仓库五步法
- 函数参数用法笔记
- 二叉树性质
- shell脚本中的dat,计算器,内置变量的用法
- Ubuntu下deb包的安装
- Spark 机器学习-实例演示- K-Means《二》