Android性能优化

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界面渲染方面的优化
  1. 尽量少的进行多层级布局,有的布局嵌套几层LinearLayout可能一个Relative就可以解决。
  2. 重复的布局使用引入的方式添加。
  3. 不确定是否需要加载的布局使用ViewStub进行填充,按需加载。
  4. 需求要求必须有相同的两层ViewGroup那么使用Merge代替内部那个ViewGroup标签。
    如LinearLayout里面还有个LinearLayout就可以使用Merge标签优化。
  5. 在高度自定义控件(重写onDraw()方法的控件)中我们是无法通过工具查看布局情况的,所以这时候,我们应该尽量少的在onDraw方法中进行复杂的绘制,同时如果需要进行多层绘制重叠图像达到自己的需求,那么需要使用clipRect方法来进行图像叠加,避免重复绘制的情况发生。

  • Service的使用
    在使用Service来完成我们的功能时,应该尽量少的启动Service,如果只是为了完成某些任务,那么任务完成时应该关闭Service

  • 注意内存资源的释放
  1. 每个Activity都会有onTrimMemory()这个方法,这个方法可以通过level监听用户离开这个界面了,这时候可以进行部分资源的释放。
  2. 同样的onTrimMemory()这个方法也可以监听到内存下降的回调,这时候同样可以通过level来判断并进行资源的释放。

  • 避免在Bitmap上浪费内存
    加载bitmap时,不要加载过大或者是不需要的图片,图片可以压缩后在加载。

你可能感兴趣的:(Android性能优化)