Android性能优化需要学习的点太多了。这里我只列举我平时对与Android性能方面进行的一些优化。如果已经完成的项目,再去重构优化是一件很麻烦的事,所以最好在开发的时候,就注意这方面的问题。想要详细了解Android性能优化方面的知识可以查看google官方的Android性能优化典范的视频
java代码编写方面的性能优化
- 避免在内部调用Getters/Setters方法
在类的内部直接访问源数据,会比使用geter,setter方法要来的快 - 多使用系统封装好的API
系统Api很多在底层封装的,效率会比自己写的高很多。所以如果没有特殊需求还是尽量使用系统Api - 使用增强型for循环语法
尽量使用增强for循环,在遍历ArrayList时使用传统的循环即可。 - 合理使用静态方法
因为静态方法在类加载时就已经加载完成了,运行效率要比非静态方法快很多。 - 对常量使用static final修饰符
被static修饰的常量和静态方法类似,类加载时就加载到内存里面了,同时如果被final修饰的常量会直接在dex文件中初始化。效率更高。按需选择使用。 - 避免创建不必要的对象
首先规避无用的对象创建,尽量少的进行字符串以加号连接,多使用StringBuilder和StringBuffer,尽量避免使用自动装箱的Integer等数据类型,对象越少垃圾越少,回收也就越少,性能也就越好。 - 避免使用枚举
枚举性能的确不行,没有必要尽量不要使用 - 使用合适的算法和数据结构是优化程序的主要手段。
- 避免反射等机制
- 避免内存泄漏
Android开发中需要注意的性能优化
- Android界面渲染方面的优化
- 尽量少的进行多层级布局,有的布局嵌套几层LinearLayout可能一个Relative就可以解决。
- 重复的布局使用引入的方式添加。
- 不确定是否需要加载的布局使用ViewStub进行填充,按需加载。
- 需求要求必须有相同的两层ViewGroup那么使用Merge代替内部那个ViewGroup标签。
如LinearLayout里面还有个LinearLayout就可以使用Merge标签优化。 - 在高度自定义控件(重写onDraw()方法的控件)中我们是无法通过工具查看布局情况的,所以这时候,我们应该尽量少的在onDraw方法中进行复杂的绘制,同时如果需要进行多层绘制重叠图像达到自己的需求,那么需要使用clipRect方法来进行图像叠加,避免重复绘制的情况发生。
- Service的使用
在使用Service来完成我们的功能时,应该尽量少的启动Service,如果只是为了完成某些任务,那么任务完成时应该关闭Service
- 注意内存资源的释放
- 每个Activity都会有onTrimMemory()这个方法,这个方法可以通过level监听用户离开这个界面了,这时候可以进行部分资源的释放。
- 同样的onTrimMemory()这个方法也可以监听到内存下降的回调,这时候同样可以通过level来判断并进行资源的释放。
- 避免在Bitmap上浪费内存
加载bitmap时,不要加载过大或者是不需要的图片,图片可以压缩后在加载。
网友评论