美文网首页
性能优化

性能优化

作者: 要学的东西太多了 | 来源:发表于2018-10-15 16:41 被阅读0次

    1.布局优化,尽量减少布局的层级,删除无用的控件和层级,选择性能较低的ViewGroup。采用include标签,merge标签和ViewStub
    include标签用于布局重用,它只支持android:layout_属性,id除外(如果被引用的根布局有id,依然以include标签的id为准),且要使用android:layout_属性,必须指定android:layout_widthandroid:layout_height,否则其他无法生效。
    merge标签主要用来减少布局的层级,比如子布局的根布局跟父布局效果一样,那么子布局的根布局其实是不必要的,用merge就可以去掉这个根布局。
    ViewStub的作用是按需加载布局,它本身不参与绘制测量过程,在代码中通过setVisibility(View.VISIBLE)inflate方法加载后,它会被内部的布局替换掉。ViewStub不支持merge标签。

    2.绘制优化,ViewOnDraw方法不要执行大量的操作(创建新的局部对象或做耗时操作)。

    3.内存泄漏优化,一是避免写内存泄漏的代码,二是通过分析工具找出潜在的内存泄漏并解决。常见的内存泄漏如下:
    (1)静态变量导致的内存泄漏,常见的就是静态对象对Activity的引用,导致Activity无法正常销毁。
    (2)单例模式导致的内存泄漏,常见的是向单例模式的对象注册持有Activity引用的监听,但是没有解注册的操作,因为单例模式的生命周期跟Application是一致的,所以Activity无法及时释放。
    (3)属性动画导致的内存泄漏,属性动画中的无限循环这一类需要在Activity销毁的时候停止,否则属性动画持有View,而View又持有Activity,导致Activity无法释放。

    4.响应速度优化,避免在主线程中做耗时操作。Activity5秒无响应或BroadCastReceiver10秒无响应,都会造成ANR。通过traces文件可以定位问题。

    5.ListView优化和Bitmap优化,ListView优化主要思路是:避免在getView方法做耗时操作;避免快速滑动时引起的大量异步任务执行;开启硬件加速。Bitmap优化则是图片压缩。

    6.线程优化,线程优化的思想是采用线程池,避免程序中使用大量的Thread

    7.优化建议:

    避免创建过多对象。
    不要过多使用枚举。
    常量用static final修饰。
    使用一些Android特有的数据结构。
    适当使用软引用和弱引用。
    采用内存缓存和磁盘缓存。
    内部类尽量采用静态的。
    

    8.提高代码的可读性,主要是命名规范,代码排版合理,关键地方才写注释。

    9.代码要有层次感,遵循单一职责原则对代码逻辑进行分层。

    10.合理采用设计模式,提高代码的可维护性和可拓展性。

    相关文章

      网友评论

          本文标题:性能优化

          本文链接:https://www.haomeiwen.com/subject/kpnfzftx.html