Android 性能优化的一些建议

本文罗列一些优化建议,具体原理不在赘述网上很多

本文地址 http://blog.csdn.net/a56573016613/article/details/48291191

static 的使用:

A   任何类任何情况不要出现static Context  mContext这样的变量(Application的可以写)。

B   永远不要出现修改static对象的代码,如static String mName = “xxx”;  mName = “zzzz”;

 Context的使用:

A  SharedPreferences、DB、File、Http等非UI相关(不依赖于当前Activity)用Application的context代替

B  Fragment里面尽量减少或者不使用getActivity(),如果必须使用必须判断非空

Broadcast使用:

如果不是跨进程的使用LocalBroadcastManager替换,这方面的可以参考http://www.cnblogs.com/trinea/archive/2012/11/09/2763182.html;

或者使用这个框架EventBus

Fragment使用:

A 必须实现setArguments,以及对应的onCreate

B 和依赖的Activity事件交互用接口方式或者EventBus,不要使用具体对象

线程使用:

A 用线程池替换AsyncTask,Thread,Time。Timer如果仅是计时可用CountDownTimer替换
B Activity、Fragment、Service做耗时操作必须使用线程

C Activity、Fragment后台线程,必须在onDestory之前做相应处理

XML:

A 减少过度背景设置和布局嵌套造成的过度渲染

B include、 viewStub 、 merge

框架相关:

A 类的定义不要写get、set方法(如果必须遵循面向对象特性这条忽略)

B 使用OkHttp网络框架,不要使用xUtils的图片框架(文件流操作写的有些问题(新版本也许改了))

C 大型或者多人协作项目建议使用MVP或者MVVM

减少不必要的资源浪费

A  尽量不要使用Context mContext这样的变量

B 不要在循环内部声明对象,减少指针的分配

C 不要在onDraw内做算法,对象初始化等操作

D 尽量减少方法的参数

E  面向接口编程,不要面向具体对象

其它优化:

A  数组赋值使用SystemCopy代替循环赋值

B  List对象重新赋值时,先clean

C  ArrayMap代替HasMap

D String.format代替形如 “a”+b+“c”这样的代码

E 代码内尽量不要直接写字符串

F Adapter永远不要尝试在getView里面new对象(实例化ViewHolder逻辑以外)

G Fragment、Activity 的onSaveInstanceState要多考虑

H Fragment的生命周期依赖于Activity,但是FragmentManager这个才是具体管理类,如果出现不可理解现象,请关注这个

I 异常处理不要写在循环内部,异常尽量指定类型不要直接一个Exception完事

J 大量数据计算可以先把浮点数转换成整数,移位操作替代运算符,多考虑下算法复杂度(数量较小的计算可以忽略)

K 延迟加载,预处理机制

L 用int类型替换结构体;用多个一维数组替换多维数组

I  用SurfaceView来实现加载数据的动画,替换ProgressBar或者继承View方式的实现,解决解析数据是卡顿现象

。。。。。。。。

想到了在补充,欢迎拍砖

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值