学习笔记3
1.MCV模式
网络层
- 网络封装
- 编写通信工具
http
- HttpClient比HttpURLConnection稳定性好很多
socket
业务层
- 公共信息处理
- 用户业务处理
- 降低层与层之间的耦合度
视图层
- 统一界面的管理
2.服务器推送方案
使用最多的是xmpp开源项目,支持的服务器较多,如用于聊天的openfire服务器,用于推送的androidpn服务器
- 1.轮询,定期到检查是否有新消息(常用,但较消耗资源)
- 2.socket的长连接
3.内存溢出的处理
- 1.在内存上做些处理,如使用软引用,强化引用,弱引用
2.在内存中加载图片的时候直接在内存中做处理,如边界的压缩
大图缓存导致内存溢出的解决办法:
123456//分别保存包名到Bitmap的强引用的映射和软引用的映射private static LinkedHashMap<String, Bitmap> hardManager; private static ConcurrentHashMap<String, SoftReference<Bitmap>> softManager;//在通过包名获取bitmap时,首先在hardManager中判断是否包含该包名,如果有,直接取出;如果没有,则在softManager中判断,有则取出,没有就通过下面方法获取private static Bitmap readBitMap(Context context, int resId) { BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true; // 获取资源图片 InputStream is = context.getResources().openRawResource(resId); return BitmapFactory.decodeStream(is, null, opt); }//获取之后插入到hardManager中,在插入时,做判断只保证hardManager的容量为10,如果大于10,就将最早插入的删除,这样就保证了我们使用大图片时不会造成内存溢出这个问题3.动态的回收内存
- 4.优化Dalvik虚拟机堆内存的分配
- 5.自定义堆内存大小
4.适配0px设置法
layout_height=0px,结合layout_weight,却可以使控件成正比例显示