zoukankan      html  css  js  c++  java
  • 《android开发艺术探索》读书笔记(十五)--Android性能优化

    接上篇《android开发艺术探索》读书笔记(十四)--JNI和NDK编程

    No1:

    如果<include>制定了这个id属性,同时被包含的布局文件的根元素也制定了id属性,那么以<include>指定的id属性为准

    No2:

    绘制优化

    1)onDraw中不要创建新的局部对象

    2)onDraw方法中不要做耗时的任务

    No3:

    内存泄露优化

    场景一:静态变量导致的内存泄露:

    如果静态变量持有了一个Activity,会导致Activity无法及时释放。

    解决办法:1使用Application的Context。 2慎用statistic关键字

    场景二:单例模式导致的内存泄露:

    因为单例模式的生命周期和Application保持一致,所以如果单例模式持有了一个Activtiy,会导致Activity无法及时释放

    解决方法:尽量的使用Application的全局Context。

    场景三:属性动画导致的内存泄露:

    因为Activity的View被动画持有,而View又持有Activity,如果动画无限循环,会导致Activity无法及时释放。

    解决方法:Activity的onDestory中调用animator.cancel()来停止动画

    No4:

    当一个进程发生ANR了以后,系统会在/data/anr目录下创建一个文件traces.txt

    No5:

    性能优化的建议

    1)避免创建过多的对象

    2)不要过多使用枚举,枚举占用的内存空间要比整形大

    3)常量请使用static final来修饰

    4)使用一些Android特有的数据结构,比如SparseArray和Pair等,它们都具有更好的性能

    5)适当使用软引用和弱引用

    6)采用内存缓存和磁盘缓存

    7)尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄露

  • 相关阅读:
    图形界面 Fedora Core 12/Core 11 How to log in GUI as r
    nis_client.txt
    nis_server.txt
    passwd
    samba.set
    【22.48%】【codeforces 689D】Friends and Subsequences
    【71.76%】【codeforces 732A】Buy a Shovel
    【56.74%】【codeforces 732B】Cormen --- The Best Friend Of a Man
    【43.26%】【codeforces 732C】Sanatorium
    【37.50%】【codeforces 732D】Exams
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8350484.html
Copyright © 2011-2022 走看看