1、length、length()、size的优化

举例:

  1. int array_one[] = {1,2,3,4,5,6,7,8,9,10};
  2. int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100};
  3. for(int i=0;i<array_one.length;i++)
  4. {
  5. for(int k=0;k<array_two.length;k++)
  6. {
  7. doSth();
  8. }
  9. }

上述代码,系统需要对每次的for循环进行数组长度的计算,系统开销自然加大,我们可以这样:

  1. int array_one[] = {1,2,3,4,5,6,7,8,9,10};
  2. int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100};
  3.  
  4. int length_array_one = array_one.length;
  5. int length_array_two= array_two.length;
  6.  
  7. for(int i=0;i<length_array_one;i++)
  8. {
  9. for(int k=0;k<length_array_two;k++)
  10. {
  11. doSth();
  12. }
  13. }

同理在计算jsonArray或者其他数组的时候,就可以通过上述方式进行优化

2、for、while的优化

  1. int array[] = {1,2,3,4..100};
  2. int length_array = array.length;
  3.  
  4. for(int i=0;i<length_array;i++)//假设我们寻找array中元素等于20的元素
  5. {
  6.  
  7. if(i == 20)
  8. {
  9. doSth();
  10. }
  11. }

如果你已经在循环中,完成了指定的业务,这个时候没有其他业务的话,还继续进行for循环,这样时间成本就增大了,我们可以这样优化:

  1. int array[] = {1,2,3,4..100};
  2. int length_array = array.length;
  3.  
  4. for(int i=0;i<length_array;i++)//假设我们寻找array中元素等于20的元素
  5. {
  6.  
  7. if(i == 20)
  8. {
  9. doSth();
  10. break
  11. }
  12. }

在适当的时候从循环中跳出来。同理如果是while循环的话,就把while 的循环条件调整为false,然后退出来

3、变量生命周期的优化

  1. int array[] = {1,2,3,4..100};
  2. int length_array = array.length;
  3.  
  4. for(int i=0;i<length_array;i++)
  5. {
  6. String str[] = new string[1000];
  7. doSth(str); //str只是作为参数使用,不对其进行修改
  8. }

看上述代码,每次循环都有新建一个数组,系统的空间使用成本成本增加我们可以这样:

  1. int array[] = {1,2,3,4..100};
  2. int length_array = array.length;
  3.  
  4. String str[] = new string[1000];
  5.  
  6. for(int i=0;i<length_array;i++)
  7. {
  8. doSth(str); //str只是作为参数使用,不对其进行修改
  9. }

这样的调整,只需要新建一次,就有效的缩小了空间成本

4、频繁的操作数据库

现在有个需求是这样的:定时器每隔15秒,获取一次售罄id列表,通过id找到数据库中对应的名称,进而进行操作。
我之前的做法是在每次找名称的时候,打开数据库得到索引。

那么修改后:每次更改菜单时就记住索引,那么在获取名称时,只需要进行操作而不需要再进行数据库的频繁打开、关闭了

8、android代码优化技术记录的更多相关文章

  1. Android开发技术周报182学习记录

    Android开发技术周报182学习记录 教程 App安全二三事 记录 为什么要安全 App的移动安全主要包括下面几种: 密钥破解,导致本地加密数据被盗取. 通信密钥破解,导致接口数据被盗取. 伪造接 ...

  2. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  3. Android开发技术周报183学习记录

    Android开发技术周报183学习记录 教程 Android性能优化来龙去脉总结 记录 一.性能问题常见 内存泄漏.频繁GC.耗电问题.OOM问题. 二.导致性能问题的原因 1.人为在ui线程中做了 ...

  4. [转载]Android开发常用调试技术记录

    ANDROID 调试技术: 1)Ps 指令 ls –l /proc/27/ cat /proc/27/cmdline       #cmdline文件表示了这个进程所在的命令行. cat /proc/ ...

  5. [转载] Android逃逸技术汇编

    本文转载自: http://blogs.360.cn/360mobile/2016/10/24/android_escape/ 摘    要 传统逃逸技术涉及网络攻防和病毒分析两大领域,网络攻防领域涉 ...

  6. Android官方技术文档翻译——清单合并

    本文译自Android官方技术文档<Manifest Merger>,原文地址:http://tools.android.com/tech-docs/new-build-system/us ...

  7. Android官方技术文档翻译——开发工具的构建概述

    本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Chec ...

  8. 解析 Android Things 技术原理

    2012 年 6 月,由 IoT-GSI(Global Standards Initiative on Internet of Things)发布的白皮书“ITU-T Y.4000/Y.2060”[1 ...

  9. 浅谈Android保护技术__代码混淆

    浅谈Android保护技术__代码混淆   代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元 ...

随机推荐

  1. [原]Python 简单文件处理

    仅仅是为了Linux操作方便= =命令行最近没有时间仔细看看,电脑一直都在机房,暂且这般记着吧= = spath="D:/download/baa.txt" f=open(spat ...

  2. 对C语言中va_list,va_start,va_arg和va_end的一点理解

    这几个函数和变量是针对可变参数函数的,什么是可变参数函数呢,最经典的莫过于printf和scanf,这两个函数的声明如下: int printf(const char *format, ...); i ...

  3. 鼠标HOVER时区块动画旋转变色的CSS3样式掩码

    鼠标hover时区块动画旋转变色的css3样式掩码<!DOCTYPE html> <html> <head> <meta charset="utf- ...

  4. 浏览器内置Console函数使用详解

    浏览器内置Console函数比较好用:Chrome 和 FireFox(Firebug插件) 利用此功能可以像直接在面板里面运行JS一样(写法不同而已) 一.显示信息的命令 Firebug内置一个co ...

  5. 日期转换(用DateTime的ParseExact方法解析特殊的日期时间)

    今天遇到一个特别的需求,需要从下面的字符串中转换成一个DateTime对象: [07-13 15:50:42] 主要问题是这个时间不是标准的时间,而是自定义的格式,即开头是月-日,然后是时间. 使用最 ...

  6. HTML5 对于手机页面长按会粘贴复制的禁用 (解决方案)

    解决方案: 直接在CSS 文件中添加下面的代码,就可以实现了在手机端禁止粘贴复制的功能: *{    -webkit-touch-callout:none;  /*系统默认菜单被禁用*/    -we ...

  7. jquery 基础汇总---导图篇

    最近在慕课网学习了一些jquery的基础知识,为了方便记忆,整理出来的导图 jQuery基础总共分为4个部分,分别是样式篇.事件篇.动画篇.DOM篇. 样式篇,主要介绍jQuery的基础语法,选择器以 ...

  8. table中绝对定位元素相对td定位失效解决方案

    开门见山! 问题:在一个table中,我需要在td里面绝对定位一个div, 写法:td{position:relative;} div{position:absolute;} OK,就这么简单,思路也 ...

  9. Spark和Hadoop作业之间的区别

    Spark目前被越来越多的企业使用,和Hadoop一样,Spark也是以作业的形式向集群提交任务,那么在内部实现Spark和Hadoop作业模型都一样吗?答案是不对的. 熟悉Hadoop的人应该都知道 ...

  10. JavaScript相关知识

    JavaScript的语法规则 l JavaScript区分大小写 比如变量a和变量A是不一样的变量,要严格区分大小写 l JavaScript脚本程序须嵌入在HTML文件中 因为javascript ...