`
444878909
  • 浏览: 637969 次
文章分类
社区版块
存档分类
最新评论

Android开发性能提升

 
阅读更多

出色的用户体验有三个特征:速度快、响应及时以及无缝。下面的信息帮助你的应用如何能够在Android上实现这些特征。
一、速度快
你不能假设手机与桌面系统和服务器一样提速,更多的是你要关注你的代码是否高效。
编写高效的Android代码,应遵循两个原则:
不要做不必要的事
不要分配不必要的内存
以下是一些达到此目标的小技巧(有一些技巧是与oo的原则冲突,斟酌使用场景):

1、避免建立对象
例如,int数组比Integer数组好,同理,这适用于所有基本类型的组合

2、使用本地方法
不要吝惜使用String.indexOf(), String.lastIndexOf()等特殊实现的方法(specialty methods)。这些方法都是使用C/C++实现的

3、使用实现类比接口好
Map myMap1 = new HashMap();
HashMap myMap2 = new HashMap();
调用一个接口的引用会比调用实体类的引用多花费一倍的时间

4、不用getter和setter
应该直接访问变量

5、将成员变量缓存到本地
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]);
另外,永远不要在for的第二个条件中调用任何方法

6、给常量加上final
static int intVal = 42;
static String strVal = “Hello, world!”;
  编译器会生成一个叫做的初始化类的方法,当类第一次被使用的时候这个方法会被执行。方法会将42赋给intVal,然后把一个指向类中常量表的引用赋给strVal。当以后要用到这些值的时候,会在成员变量表中查找到他们。
static final int intVal = 42;
static final String strVal = “Hello, world!”;
  现在,类不再需要方法,因为在成员变量初始化的时候,会将常量直接保存到类文件中。用到intVal的代码被直接替换成42,而使用strVal的会指向一个字符串常量,而不是使用成员变量。

7、谨慎使用foreach
  foreach可以用在实现了Iterable接口的集合类型上。foreach会给这些对象分配一个iterator,然后调用hasNext()和next()方法。你最好使用foreach处理ArrayList对象,但是对其他集合对象,foreach相当于使用 iterator

8、避免使用枚举
  枚举变量非常方便,但不幸的是它会牺牲执行的速度和并大幅增加文件体积

9、将内部类需要访问的外部变量或方法声明在包范围内
public class Foo {
  private int mValue;
  public void run() {
  Inner in = new Inner();
  mValue = 27;
  in.stuff();
  }
  private class Inner {
  void stuff() {
   System.out.println(Foo.this.mValue);
  }
  }
}
Foo$Inner是一个完全独立的类,它要直接访问Foo的私有成员是非法的。编译器会自动生成一个方法:
/*package*/ static int Foo.access$100(Foo foo) {
  return foo.mValue;
}
内部类在每次访问”mValue”方法时,都会调用这个静态方法。同理,内部类要访问私有方法也是如此。

10、避免使用浮点数
嵌入式处理器通常没有支持浮点运算的硬件,所有对”float”和”double”的运算都是通过软件实现的
通过将内部类访问的变量和函数声明由私有范围改为包范围,我们可以避免这个问题。这样做可以让代码运行更快,并且避免产生额外的静态方法。(遗憾的是,这些成员变量和方法可以被同一个包内的其他类直接访问,这与经典的OO原则相违背。因此当你设计的时候应该谨慎使用这条优化原则)

二、响应及时
1、将耗时工作交到子线程

2、如果你的程序在后台处理用户的输入,给出一个你正在工作的提示(ProgressBar(进度条)和ProgressDialog(进度对话框)是很好的选择)

3、如果是游戏,把计算步骤放在子线程中


三、无缝
1、不要丢失数据,继承onPause()方法

2、利用ContentProvider来共享数据

3、不要打断用户,使用通知

分享到:
评论

相关推荐

    阿里巴巴Android开发手册正式版1.0.1

    App 开发,呈现给用户体验好、性能优、稳定性佳、安全性高的产品。 《阿里巴巴 Android 开发手册》作为阿里巴巴开发规约重要的一环,我们的目标是:  防患未然,提升质量意识,降低故障率和维护成本;  标准统一...

    最新提升android应用开发性能.docx

    最新提升android应用开发性能.docx

    android性能优化

    android界面及代码优化方案,帮助提升android应用的性能

    一种Android开发测试环境性能提升方法的研究.pdf

    一种Android开发测试环境性能提升方法的研究.pdf

    提升Android应用开发性能的十大要点.docx

    开发者必知:提升Android应用开发性能的十大要点.docx

    阿里巴巴Android开发手册正式高清版

    该开发规范在阿里内部经过了不断完善,现在整理成册,并向业界Android开发者开放,希望能够帮助企业和开发者少走弯路,提升Android开发的质量和效率。 本手册以开发者为中心视角分为Java语言规范(遵循《阿里巴巴...

    Android 3D游戏开发技术宝典(高清带目录)

    OpenGL ES 2.0》结合作者多年从事3D游戏应用开发的宝贵经验,全面介绍了与Android平台相关的必知必会的基础知识及大型完整3D案例,讲解上由浅入深,循序渐进,起点低、终点高,既适合初学者学习,也适合有一定基础的...

    Android 5.0开发范例代码大全+源码

    ●使用Android NDK和RenderScript提升应用程序性能 ●设计高性能、响应灵敏和无缝衔接的应用程序 ●在设备和其他外部硬件之间发送数据 ●持久保存应用程序数据并在应用程序之间共享 ●捕获和播放各种设备媒体项 ●与...

    android应用性能优化

    内容简介:, 今天的Android应用开发者经常要想尽办法来提升程序性能。由于应用越来越复杂,这个问题也变得越来越棘手。本书主要介绍如何快速高效地优化应用,让应用变得稳定高效。你将学会利用Android SDK和NDK来...

    阿里巴巴Android开发手册_正式版

    该开发规范在阿里内部经过了不断完善,现在整理成册,并向业界Android开发者开放,希望能够帮助企业和开发者少走弯路,提升Android开发的质量和效率。 规范内容概览 本手册以开发者为中心视角分为Java语言规范(遵循...

    Android应用性能优化

    内容简介:, 今天的Android应用开发者经常要想尽办法来提升程序性能。由于应用越来越复杂,这个问题也变得越来越棘手。本书主要介绍如何快速高效地优化应用,让应用变得稳定高效。你将学会利用Android SDK和NDK来...

    Android开发过程中一些简单的小项目.zip

    学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的...

    android项目开发源码示例.zip

    学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的...

    《HenCoder Android 开发进阶:UI 1-1 绘制基础》 的练习项目.zip

    学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的...

    《HenCoder Android 开发进阶:自定义 View 1-5 绘制顺序》 的练习项目.zip

    学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的...

    《HenCoder Android 开发进阶:UI 1-3 文字的绘制》 的练习项目.zip

    学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的...

    《HenCoder Android 开发进阶:UI 1-4 Canvas 对绘制的辅助》 的练习项目.zip

    学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的...

    《Android 5.0 开发范例代码大全》(第4版)作者:[美] Dave Smith Jeff Friesen 著 张永强 译

    ● 使用Android NDK和RenderScript提升应用程序性能 ● 设计高性能、响应灵敏和无缝衔接的应用程序 ● 在设备和其他外部硬件之间发送数据 ● 持久保存应用程序数据并在应用程序之间共享 ● 捕获和播放各种设备...

    一些Android项目开发中的知识累积.zip

    学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的...

    Android 2.2 开发环境配置详解(最新出炉)

    据官 方介绍,新版系统带来性能的大幅度提升,除了支持Flash 10.1,另外还在系统界面、功能等方面进行了许多细节性优化. Android 2.2是非常值得期待,下面是根据个人实践经验配置Android SDK2.2+Eclipse 的开放环境...

Global site tag (gtag.js) - Google Analytics