您的位置:首页 > 移动开发 > Android开发

android 开发 性能优化

2016-10-12 15:27 190 查看
1.ui层

①.在listview,gridview中复用item

②.pager最好不要过多预加载,默认预加载为二

③.多用ViewStub,减少初加载时渲染界面消耗的内存

④.多用merge,减少视图的嵌套层次结构

2.图片

①.适当压缩图片,但是也要适应大分辨率手机,所以需要在drawable或者mipmap中创建多个文件夹,放不同分辨率的图片

②.避免使用位图(.jpg,.png),这样可以节省不少空间

③.用xml绘图,可以用来代替位图,可以节省空间,而且具有很好的适配性,可以适应任何屏幕

④.通过draw()创建自定义views。

⑤.再不能使用xml的地方使用矢量图,可以自己创建矢量图,也可以利用SVG工具创建矢量图,还可以在阿里巴巴矢量图标库中直接找矢量图

⑥.如果实在要用png图片,可以用PNGCrash优化一下

3.运行速度

①.当在LinearLayout使用时会嵌套多层布局时,而Relativeyout又可以使用时,最好用Relativeyout

②.用异步任务(AsynTask),完成耗时操作,提高ui的响应性

③.用merge

4.缓存与网络

①.用软引用,弱引用或者用lrucache,disklrucache。当我们用强引用时候发现占用内存,然后我们选择了用弱引用,软引用。当我们发现内存回收不可控时,我们会选择用lrucache和disklrucache通过算法来平衡内存与硬盘缓存

②.网络+数据库,记录上一次请求时间,然后在五分钟内不在请求网络,避免重复请求,只加载数据库数据就行。或者还有一些http框架是支持这些的,或者当服务端返回304时将之前缓存的数据直接返回

③.利用框架合并多个http请求

④.控制请求并发量。对客户端本身,除了上述的实现,我们还需要合理的缓存,控制最大请求并发量,及时取消已失效的请求,过滤重复请求,timeout时间设置,请求优先级设置等

5.代码规范

①.在for loop中不要声明临时变量,不到万不得已不要try catch

②.明白垃圾回收机制,避免频繁GC,OOM

③.合理使用数据类型,比如StringBuilder代替String,(笔试题最常见的是str+=”str”中有几个对象) ,少用枚举enum,少用父类声明。(List,Map)

④.不要频繁的new 线程,可以使用线程池代替

⑤.你要知道单例的好处,并正确使用他

⑥.多用常量,少用显式的”action_key”,并维护一个常量类,别重复声明这些常量。

⑦.如果可以,至少要弄懂策略模式,组合模式,装饰模式,工厂模式,观察者模式。这些可以合理的帮助你解耦合
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: