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可以提高性能.

               

  • 相关阅读:
    树莓派frp添加为服务管理
    liunx开源打印驱动foo2zjs编译小坑
    树莓派中实现ll命令
    Windows中使用QEMU创建树莓派虚拟机
    C#打印条码BarTender SDK打印之路和离开之路(web平凡之路)(转)
    数据库连接池问题 Max Pool Size
    C#时间
    XAF 如何从Excel复制多个单元格内容到GridView(收藏)
    C#日期处理(转) 太忘记了,备忘
    C#、devExpress 的 给bandedGrid加菜单功能 :复制、粘贴的例子(转)
  • 原文地址:https://www.cnblogs.com/God-boy1/p/4322250.html
Copyright © 2011-2022 走看看