zoukankan      html  css  js  c++  java
  • Android应用性能优化笔记(java代码优化)

                                                                   Java代码优化

     缓存结果: 

                         如果计算代价过高,最好把过去的结果缓存起来。

     伪代码如下:

                    result=cache.get(n);        //输入参数n作为键

                    if(result==null)

                   {

                      //如果在缓存中没有result值,就计算出来填进去

                      result=computeResult(n);

                      cache.put(n,result);   //n作为键,

                    }

                   return result;

     你可能打算一个HashMap充当缓存,它可以胜任这项工作.不过,Android定义了SparseArray类,当键是整数时,它比HashMap效率更高。

    因为HashMap 使用的是java.lang.Integer对象,而SparseArray使用的是基本类型int.因此使用HashMap会创建很多Integer对象,而使用

    SparseArray则可以避免.

     API

          if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB)

           {

             sparseArray.removeAt(1);  //API等级11及以上

           }

            else

            {

               int key=sparseArray.keyAt(1);  //默认实现慢一些

              sparseArray.remove(key);

            }

         这类代码很常用,它既可以使用最适当的API来获取最好性能,也可以在旧的平台上(可能使用了较慢的API)正常运行.

       数据结构:

          如果你使用基于散列的数据结构(例如HashMap),而且键是自定义的对象,确保你正确覆盖了类定义中的equal和hashCode

    方法。hashCode的低劣实现可以轻易将散列的收益化为乌有. 

     每当Android新版本的发布,都要特别注意android.util包和java.util包.(因为几乎所有的组件依赖这两个工具箱).

      响应能力: 

         应用可以延迟创建对象,直到需要时才创建,称为推迟初始化的技术.

         为Activity优化启动序列:

            onCreate->onStart->onResume (这个序列发生在创建Activity时),当配置发生变化时,当前Activity被销毁,并创建一个新实例,会调用

    以下序列:onPause->onStop->onDestory->onCreate->onStart->onResume

        应用可以在mainfest文件里指定每个Activity元素的Android:configChanges属性,让它只接受自己想处理的配置变化。这会导致

    调用Activity的onConfigurationChanged(),而不是销毁.

         通常情况下,在应用启动时,既当onCreate()被调用时,启用StrictMode。

     SQLite

              使用+运算符来连接字符串不是最有效的方法,而使用StringBuilder对象,或调用String.format可以提高性能.

               

  • 相关阅读:
    积水路面Wet Road Materials 2.3
    门控时钟问题
    饮料机问题
    Codeforces Round #340 (Div. 2) E. XOR and Favorite Number (莫队)
    Educational Codeforces Round 82 (Rated for Div. 2)部分题解
    Educational Codeforces Round 86 (Rated for Div. 2)部分题解
    Grakn Forces 2020部分题解
    2020 年百度之星·程序设计大赛
    POJ Nearest Common Ancestors (RMQ+树上dfs序求LCA)
    算法竞赛进阶指南 聚会 (LCA)
  • 原文地址:https://www.cnblogs.com/God-boy1/p/4322250.html
Copyright © 2011-2022 走看看