编写高效的Android代码

  为什么在这就意味着没有多少剩余空间给你去浪费了,因此,在你写Androi编写Android程序时要时刻考虑执行的效率,这些系统不是想象中的那么快,并且你还要考虑它电池的续航能力。写程序的时候,要尽可能的使你的代码优化而提高效率。

  对于如何判断一个系统的不合理,这里有两个基本的原则:

1、不要做不必要做的事情。

2、尽可能的节省内存的使用。

下面是常用的几点优化建议:

1、尽可能避免创建对象(Object)

  因为对象的创建并不是没有代价的,如果你在一个用户界面的循环中分配一个对象,你不得不强制的进行内存回收,那么就会使用户体验出现稍微“打嗝”的现象。

当从原始的输入数据中提取字符串时,试着从原始字符串返回一个子字符串,而不是创建一份拷贝。

2、使用自身方法(Use Native Methods)

  当处理字符串的时候,不要犹豫,尽可能多的使用诸如String.indexOf()、String.lastIndexOf()这样对象自身带有的方法。因为这些方法使用C/C++来实现的,

要比在一个java循环中做同样的事情快10-100倍。

3、缓冲属性调用Cache Field Lookups

  访问对象属性要比访问本地变量慢得多。你不应该这样写你的代码:

for (int i = 0; i < this.mCount; i++)

dumpItem(this.mItems[i]);

而是应该这样写:

int count = this.mCount;

Item[] items = this.mItems;

for (int i = 0; i < count; i++)

dumpItems(items[i]);

(我们直接使用“this”表明这些是它的成员变量)

4、声明Final常量

  我们可以看看下面一个类顶部的声明:

static int intVal = 42;

static String strVal = "Hello, world!";

当一个类第一次使用时,编译器会调用一个类初始化方法,这个方法将42存入变量intVal,并且为strVal在类文件字符串常量表中提取一个引用,当这些值在后面引用时,就会直接属性调用。

我们可以用关键字“final”来改进代码:

static final int intVal = 42;

static final String strVal = "Hello, world!";

这个类将不会调用类初始化方法,因为这些常量直接写入了类文件静态属性初始化中,这个初始化直接由虚拟机来处理。代码访问intVal将会使用Integer类型的42,访问strVal将使用相对节省的“字符串常量”来替代一个属性调用。

将一个类或者方法声明为“final”并不会带来任何的执行上的好处,它能够进行一定的最优化处理。例如,如果编译器知道一个Get方法不能被子类重载,那么它就把该函数设置成Inline。

5、避免浮点类型的使用

  嵌入式的处理器通常并不支持浮点数的处理,因此所有的“float”和“double”操作都是通过软件进行的,一些基本的浮点数的操作就需要花费毫秒级的时间。

同事,即使是整数,一些芯片也只有乘法而没有除法。在这些情况下,整数的除法和取模操作都是通过软件实现。

6、避免列举类型Avoid Enums

  列举类型非常好用,当考虑到尺寸和速度的时候,就会显得代价很高,例如:

public class Foo {

public enum Shrubbery { GROUND, CRAWLING, HANGING }

}

这会转变成为一个900字节的class文件(Foo$Shrubbery.class)。第一次使用时,类的初始化要在独享上面调用方法去描述列举的每一项,每一个对象都要有它自身的静态空间,整个被储存在一个数组里面(一个叫做“$VALUE”的静态数组)。那是一大堆的代码和数据,仅仅是为了三个整数值。

Shrubbery shrub = Shrubbery.GROUND;

这会引起一个静态属性的调用,如果GROUND是一个静态的Final变量,编译器会把它当做一个常数嵌套在代码里面。

编写高效的Android代码

时间: 2024-08-14 04:57:03

编写高效的Android代码的相关文章

如何编写高效的Android代码

时间是很宝贵的东西,在编写Android代码的时候尽可能的编写出高效的Android代码可以节省你很多的时间,让你有时间去泡妞.去陪女朋友.去陪基友,去吃饭.去娱乐.去睡觉!毕竟,谁都不想整夜整夜的加班,然后还乱吼:时间都去哪了?!下面就整理了怎样提高效率,编写高效的Android代码!看到这,偷笑了吧,表掩饰,我已看到! 对于如何判断一个系统的不合理,这里有两个基本的原则: 一.不要做不必要做的事情. 二.尽可能的节省内存的使用优化链接: http://c.tieba.baidu.com/p/

编写高效的jQuery代码

最近写了很多的js,虽然效果都实现了,但是总感觉自己写的js在性能上还能有很大的提升.本文我计划总结一些网上找的和我本人的一些建议,来提升你的jQuery和javascript代码.好的代码会带来速度的提升.快速渲染和响应意味着更好的用户体验.谨以此文来提醒自己. 首先,跟大家推荐一下jQuery API 文档 http://www.css88.com/jqapi-1.9/ ,她会告诉你使用jQuery时应该注意的哪些问题,性能建议,及哪些情况下可能会出现问题:帮助你更好的了解和掌握jQuery

利用on和off方法编写高效的js代码

先说下将这个话题的起因:最近发现公司的功能代码,很多在dom对象删除以后,其声明的绑定在window上的resize事件还一直存在,导致相同的功能代码执行了几次.对于我这种轻微代码洁癖的人来说,简直是个大坑. 所以,这里以jQuery的resize方法为例,讲解下我所理解的高效写法. 先看一下普通的在window下绑定resize事件: 1 $(window).resize(function(){ 2 console.log("hehe"); 3 }); 4 $(window).res

(转载)编写高效的jQuery代码

原文地址:http://www.cnblogs.com/ppforever/p/4084232.html 最近写了很多的js,虽然效果都实现了,但是总感觉自己写的js在性能上还能有很大的提升.本文我计划总结一些网上找的和我本人的一些建议,来提升你的jQuery和javascript代码.好的代码会带来速度的提升.快速渲染和响应意味着更好的用户体验.谨以此文来提醒自己. 首先,跟大家推荐一下jQuery API 文档 http://www.css88.com/jqapi-1.9/ ,她会告诉你使用

学习PHP精粹,编写高效PHP代码之自动测试

如果要制造出完美的产品,必须对它进行全方面检验测试.这里有几种类型的测试,每一种测试都针对应用程序的某个具体方面. 本文将对单元测试.数据库测试.系统测试.负载测试进行介绍. 一.单元测试 单元测试是测试应用程序的每一步,要确保其各个组成部分运转正常.若没有单元测试,在应用程序中找出导致错误运行的原因一般来说相当困难. 单元测试通常采用一个单元测试框架,它提供了编写和运行测试并输出结果所需要的基本结构. 一些较为常用的单元测试框架包括: PHPUnit:http://phpunit.de/ Si

学习PHP精粹,编写高效PHP代码之安全性

一.过滤输入.避免输出 有时我们将短语"过滤输入.避免输出"缩写为FIEO,这已成为PHP应用程序的安全真言. 1.利用ctype进行验证 ctype:http://php.net/ctype 2.利用PCRE(Perl兼容的正则表达式)进行验证 PCRE:http://php.net/pcre 二.跨站脚本 跨站脚本通常简称为XSS,攻击载体以在应用程序输出中由用户提供的变量所在位置为目标,但该变量没有适当地转义.这允许攻击者注入他们选择的一个客户端脚本作为这个变量值的一部分.下面是

js学习笔记-编写高效、规范的js代码-Tom

编写高效.规范的js代码: 1.变量命名空间问题,尽量使用局部变量,防止命名冲突(污染作用域中的全局变量):全局空间命名的变量可以在对应的文档域任意位置中使用window调用. 2.尽量使用单var定义变量(作用域开始先申明并赋值变量,便于后边使用),使用var定义的变量只作用于对应的作用域中,如定义的全局变量作用于全局作用域,函数中定义的变量作用于该局部作用域中.未用var定义的变量相当于一个全局变量,在函数中出现的该类变量作用域全局域.(但是var定义的全局变量不能用delete删除,而未定

android代码规范和studio配置CodeStyle

studio配置CodeStyle可以很好的帮助我们检测代码规范性,保持大家的代码统一,来看看怎么配置和使用吧 代码规范,自己公司的一套 代码规范 一.      简介 A.    目的 本文提供一整套编写高效可靠的 Java代码的标准.约定和指南.它们以安全可靠的软件工程原则为基础,使代码易于理解.维护和增强.而且,通过遵循这些程序设计标准,你作为一个 Java软件开发者的生产效率会有显著提高.经验证明,若从一开始就花时间编写高质量的代码,则在软件开发阶段,对代码的修改要容易很多.最后,遵循一

使用平台通道编写平台特定的代码

使用平台通道编写平台特定的代码 本指南介绍如何编写自定义平台特定的代码.一些平台特定的功能可通过现有软件包获得; 请参阅使用 packages. 框架概述: 平台通道 平台通道数据类型支持和解码器 示例: 使用平台通道调用iOS和Android代码 Step 1: 创建一个新的应用程序项目 Step 2: 创建Flutter平台客户端 Step 3a: 使用Java添加Android平台特定的实现 Step 3b: 使用Kotlin添加Android平台特定的实现 Step 4a: 使用Obje