Android 客户端开发存在问题分类汇总待续

客户端问题分类汇总:
一、空指针:最常见的异常,也是最简单的,同时也是最头痛的
1.各种判空不完善,需要做前置判空或者后置判空
2.使用equals比较实例不当,如instance.equals("")
3.可能导致问题的地方没有做基本异常捕获,写程序时要严格判断可能存在各种异常的情况,一旦发现有可能抛出异常就必须要
做异常的处理准备,除非你确保改代码块不可能出现任何问题,否则可能导致致命问题,一般的致命问题都是这类不严谨导致的


二、http网络请求:
1.请求超时,必要时需要ping一下,查找是客户端还是服务端的超时,检查客户端请求超时时限是否太短
2.请求禁止,这是由服务端禁止的响应
3.请求地址不存在,请求的url不正确
4.字符编码,双方编码不一致,或者发请求没有按照服务端的需求进行url编码
5.数据解析,格式不规范,或者数据解析有漏洞


三、内存溢出、泄露
1.较长生命周期的实例引用了较短生命周期的对象,导致较短生命周期的实例数据域无法释放导致内存泄露,如static是全局生命的
变量使用了普通的无需作为全局生命的实例那么就会导致问题,这是编程中广泛存在的问题,可以通过memberAnlyzer工具检查,当然编程要求和习惯更加重要;
安卓中较容易发生此类问题的场景是,static变量引用了诸如service,activity或者其他较短生命周期的对象,需要避免,
如果一个static变量引用了一个位图资源,后果更加恐怖;
2.安卓中展示图片的方式如下:
一张480*800像素的图片,如果使用ARGB_8888质量来显示,那么它占用的内存就是:(480*800*8byte)/(1024*1024)=2.93M,
由此可见一张和手机屏幕大小差不多的图片以全像素质量显示,将会占到接近3M的内存,更别说通过手机相机拍照的图片,
打个比方一个800万像素的手机拍照的照片大概在3500*2400=800万像素,也就是终止显示起来最高达8M,一张图片8M,什么概念?
由此我们需要谨慎的使用内存,如何减少内存的使用,避免大批量照片展示或处理导致的内存溢出:
a.使用图片缩略图,按照控件需要显示的大小,通过等比的计算得到缩略图,展示效果和使用一张大图显示的效果一样,
因为不管多大的图片在内存中很大最终显示到屏幕最终还是要经过像素适配缩放的处理,所以我们应该在内存中就存放和显示目标一样或者差不多的图片,减少了系统压塑图片的时间
b.使用图片缓存,内存和磁盘双缓存,软引用或者弱引用都使用起来,软和弱的区别,软--内存不够了就释放掉一部分,弱--不管够不够都会随机的释放,强--无论如何虚拟机不回收,虚--在gc回收之前把
引用加入到引用队列的状态;目前java有开源的ImageLoader供使用已异步加载图片比较成熟性能稳定功能较多较强
c.使用图片时加载到内存的options设置为RGB_555或者ARGB_4444前者不支持透明效果(无需透明效果时可以使用),后缀支持透明像素质量减半





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值