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

Android应用性能优化笔记(java代码优化)的更多相关文章

  1. Android App性能优化笔记之一:性能优化是什么及为什么?

    By Long Luo   周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住 ...

  2. Androidi性能优化之Java代码优化(摘自Android性能优化一书)

    代码优化不是应用开发的首要任务,提供良好的用户体验并专注于代码的可维护性,这才是你的首要任务.事实上,代码优化应该是最后才做,甚至完全可能不去做,不过,良好的优化可以使程序性能直接达到一个可接受的水平 ...

  3. 性能优化之Java(Android)代码优化

    最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇——Java(Android)代码优化.主要介绍Java代码中性能优化方式及网络优化, ...

  4. Android应用性能优化(转)

    人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯(帧率为24fps),用手机当然也需要感知屏幕操作的连贯性(尤其是动画过度),所以Android索性就把达到这 ...

  5. Android App 性能优化实践

    本文记录了Android App优化需要用到的工具和以及在实践中的Tips.也算对我这半年来部分工作的总结. 工具 Hierarchy Viewer 是 Android SDK 自带的 Layout ...

  6. Android客户端性能优化(魅族资深工程师毫无保留奉献)

    本文由魅族科技有限公司资深Android开发工程师degao(嵌入式企鹅圈原创团队成员)撰写,是degao在嵌入式企鹅圈发表的第一篇原创文章,毫无保留地总结分享其在领导魅族多个项目开发中的Androi ...

  7. Android APP 性能优化的一些思考

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  8. Android app 性能优化的思考--性能卡顿不好的原因在哪?

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  9. android app性能优化大汇总

    这里根据网络上各位大神已经总结的知识内容做一个大汇总,作为记录,方便后续“温故知新”. 性能指标: (1)使用流畅度:  图片处理器每秒刷新的帧数(FPS),可用来指示页面是否平滑的渲染.高的帧率可以 ...

随机推荐

  1. AE数据加载

    1. 数据加载问题: 任何系统都离不开数据的加载,下边就AE中几种常用的数据加载做一个列举.以便查阅: 1.加载个人数据库 个人数据库是保存在Access中的数据库.其加载方式有两种:通过名字和通过属 ...

  2. Ossec常用命令

    启动并查看httpd服务 systemctl start httpd systemctl status httpd.service 启动并查看mysql服务 systemctl start maria ...

  3. 1、创建一个JPA project(解决“at least one user library must be selected”问题)

    (注:本系列笔记是在学习尚硅谷JPA课程的时候写下的,结合课程内容和自我理解,方便自己以后进行复习) 一.在创建JPA之前看看什么是JPA 1.Java Persistence API:用于对象持久化 ...

  4. ZOJ 3349 Special Subsequence 简单DP + 线段树

    同 HDU 2836 只不过改成了求最长子串. DP+线段树单点修改+区间查最值. #include <cstdio> #include <cstring> #include ...

  5. PHP 语言需要避免的 10 大误区

    PHP是一种非常流行的开源服务器端脚本语言,你在万维网看到的大多数网站都是使用php开发的.但是,你大概很奇怪的注意到有少部分的人发誓要离php 远远的.但是令人更奇怪的是或者很震惊的说他们不用php ...

  6. 【C#设计模式——创建型模式】工场方法模式

    工场方法模式对简单工场模式进行了乔庙的扩展,不是用一个专门的类来决定实例化哪一个子类.相反,超类把这种决定延迟到每个子类.这种模式实际上没有决策点,就是没有直接选择一个子类实例化的决策. 看书上的例子 ...

  7. mac下git中文乱码

    今天从window切mac,git使用时各种问题.典型的就是,git commit 可以使用中文注释,但是使用 git log 查看的时候发现都是乱码,乱码效果如下: <B1><E0 ...

  8. 对mysql经常使用语句的详细总结

    下面总结的知识点全是经常用的,全都是干货,好好收藏吧. /* 启动mysql */net start mysql /* 连接与断开服务器 */mysql -h 地址 -p 端口 -u 用户名 -p 密 ...

  9. hdu 4970 Killing Monsters (思维 暴力)

    题目链接 题意: 有n座塔,每座塔的攻击范围为[l,r],攻击力为d,有k个怪兽从这些塔前面经过,第i只怪兽初始的生命力为hp,出现的位置为x,终点为第n个格子.问最后有多少只怪兽还活着. 分析: 这 ...

  10. 2014年百度之星程序设计大赛 - 初赛(第一轮) hdu Grids (卡特兰数 大数除法取余 扩展gcd)

    题目链接 分析:打表以后就能发现时卡特兰数, 但是有除法取余. f[i] = f[i-1]*(4*i - 2)/(i+1); 看了一下网上的题解,照着题解写了下面的代码,不过还是不明白,为什么用扩展g ...