美文网首页Android新优化
Android优化六:性能优化

Android优化六:性能优化

作者: ldlywt | 来源:发表于2018-03-05 17:18 被阅读156次

    Android优化一:提纲
    Android优化二:性能检测
    Android优化三:内存优化
    Android优化四:App启动速度优化
    Android优化五:布局优化
    Android优化六:性能优化

    节制的使用Service

    如果应用程序需要使用Service来执行后台任务的话,只有当任务正在执行的时候才应该让Service运行起来。
    当启动一个Service时,系统会倾向于将这个Service所依赖的进程进行保留,系统可以在LRUcache当中缓存的进程数量也会减少,导致切换程序的时候耗费更多性能。
    我们可以使用IntentService,当后台任务执行结束后会自动停止,避免了Service的内存泄漏。

    当界面不可见时释放内存

    当用户打开了另外一个程序,我们的程序界面已经不可见的时候,我们应当将所有和界面相关的资源进行释放。
    重写Activity的onTrimMemory()方法,然后在这个方法中监听TRIM_MEMORY_UI_HIDDEN这个级别,一旦触发说明用户离开了程序,此时就可以进行资源释放操作了。

    当内存紧张时释放内存

    onTrimMemory()方法还有很多种其他类型的回调,可以在手机内存降低的时候及时通知我们,我们应该根据回调中传入的级别来去决定如何释放应用程序的资源。

    避免在Bitmap上浪费内存

    读取一个Bitmap图片的时候,千万不要去加载不需要的分辨率。可以压缩图片等操作。

    HashMap 优化

    用 Android Studio 写代码时,经常会提示对 HashMap 的警告优化,推举我们使用 SparseArray 等。

    • SparseArray
      SparseArray比HashMap更省内存,在某些条件下性能更好,主要是因为它避免了对key的自动装箱(int转为Integer类型),它内部则是通过两个数组来进行数据存储的,一个存储key,另外一个存储value,为了优化性能,它内部对数据还采取了压缩的方式来表示稀疏数组的数据。
      SparseArray只能存储key为int类型的数据,同时,SparseArray在存储和读取数据时候,使用的是二分查找法。
      应用场景:数据量不大,最好在千级以内 + key必须为int类型
    • ArrayMap
      如果key的类型已经确定为int类型,那么使用SparseArray,因为它避免了自动装箱的过程,如果key为long类型,使用LongSparseArray。
      如果key类型为其它的类型,则使用ArrayMap。

    部分来自:
    From https://mp.weixin.qq.com/s/YVvV3-RUjbqYo-DYY3E6nA

    相关文章

      网友评论

        本文标题:Android优化六:性能优化

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