转载请注明出处:http://blog.csdn.net/oyuanwa/article/details/44034863
1.1、静态功能抽取到静态工具类(Utils)(序列化功能,加解密功能,获取 系统配置信息功能,图形图像处理功能,http请求功能,获取存储路径,静态配置APPConfig等等);
Ps:APK加壳、混淆能有效防止string型Config内容泄漏
1.2、核心模块的编写(线程、Task与线程池模块,网络请求与响应数据的处理模块、缓存模块(非敏感http请求缓存或图片缓存,三级缓存)、IO与DB模块、内存管理模块(目前只对Bitmap处理)
1.3、业务逻辑的编写(注意业务逻辑与activtiy分离,如登陆逻辑可以编写LoginManager处理登录逻辑和用户信息,同理权限管理AuthorityManager、密码管理 PasswordManager等逻辑与activity分离便于降低耦合度,便于activity等组件和控件、跳转逻辑的修改。
1.4、多使用JavaBean少使用map,GOOGLE推荐安卓开发使用Map,Map在个人开发中比较方便,但团队开发使用javaBean更符合面向对象,清晰度更高,可读性更强,而且json转JavaBean也很方便
2、性能优化与提高资源利用率、防止内存溢出
2.1、App内存优化
2.1.1、对象内存优化
0:减少零时变量的产生
1:不要随意实现接口,如OnClickListener 一个组件中实现一个通过if做判断
2:解耦代码时,防止上下文Context的泄露
2.1.2、线程与服务的管理
利用线程池控制线程数量、复用线程、回收线程、处理掉有问题的线程,注意后台服务的管理,合理控制其启动与停用
2.1.3、图片Bitmap处理
0 :利用软引用SoftReference与弱引用WeakReference,软引用可有效防止Bitmap导致的内存溢出,弱引用可减少内存占用),常图片进行软引用,不常用图片进行弱引用。
1:ImageView对Bitmap操作的动画效果,需要做大量的重绘,为防止绘制到屏幕上时,
界面闪烁,可使用双缓冲技术
2.1.4、UI与View优化
0 :UI布局中要降低控件树的深度,复杂布局使用RelativeLayout (可朔性强), 简单布局父控件使用FrameLayout(内部逻辑简单)。
1: 具有完整单独功能的控件组,可打包(留布局接口)。便于模块 控件的复用。如支付功能的支付方式的选择View等;可交互的 ViewGroup(MenuLayout,SlideingLayout,PullRefreshView,CanSlideBottomBar等等); 注意事件的分发和拦截(这部分看附件)。
3、用户逻辑的优化
3.1、非重要信息使用Toast
不用Dialog,减少用户的非必要操作,或用户动画代替消息提示
3.2、合理使用LaunchMode
减少跳转逻辑形成环的可能,避免打开多个相同的activity。