8、android代码优化技术记录
1、length、length()、size的优化
举例:
int array_one[] = {1,2,3,4,5,6,7,8,9,10};
int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100};
for(int i=0;i<array_one.length;i++)
{
for(int k=0;k<array_two.length;k++)
{
doSth();
}
}
上述代码,系统需要对每次的for循环进行数组长度的计算,系统开销自然加大,我们可以这样:
int array_one[] = {1,2,3,4,5,6,7,8,9,10};
int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100};
int length_array_one = array_one.length;
int length_array_two= array_two.length;
for(int i=0;i<length_array_one;i++)
{
for(int k=0;k<length_array_two;k++)
{
doSth();
}
}
同理在计算jsonArray或者其他数组的时候,就可以通过上述方式进行优化
2、for、while的优化
int array[] = {1,2,3,4..100};
int length_array = array.length;
for(int i=0;i<length_array;i++)//假设我们寻找array中元素等于20的元素
{
if(i == 20)
{
doSth();
}
}
如果你已经在循环中,完成了指定的业务,这个时候没有其他业务的话,还继续进行for循环,这样时间成本就增大了,我们可以这样优化:
int array[] = {1,2,3,4..100};
int length_array = array.length;
for(int i=0;i<length_array;i++)//假设我们寻找array中元素等于20的元素
{
if(i == 20)
{
doSth();
break;
}
}
在适当的时候从循环中跳出来。同理如果是while循环的话,就把while 的循环条件调整为false,然后退出来
3、变量生命周期的优化
int array[] = {1,2,3,4..100};
int length_array = array.length;
for(int i=0;i<length_array;i++)
{
String str[] = new string[1000];
doSth(str); //str只是作为参数使用,不对其进行修改
}
看上述代码,每次循环都有新建一个数组,系统的空间使用成本成本增加我们可以这样:
int array[] = {1,2,3,4..100};
int length_array = array.length;
String str[] = new string[1000];
for(int i=0;i<length_array;i++)
{
doSth(str); //str只是作为参数使用,不对其进行修改
}
这样的调整,只需要新建一次,就有效的缩小了空间成本
4、频繁的操作数据库
现在有个需求是这样的:定时器每隔15秒,获取一次售罄id列表,通过id找到数据库中对应的名称,进而进行操作。
我之前的做法是在每次找名称的时候,打开数据库得到索引。
那么修改后:每次更改菜单时就记住索引,那么在获取名称时,只需要进行操作而不需要再进行数据库的频繁打开、关闭了
8、android代码优化技术记录的更多相关文章
- Android开发技术周报182学习记录
Android开发技术周报182学习记录 教程 App安全二三事 记录 为什么要安全 App的移动安全主要包括下面几种: 密钥破解,导致本地加密数据被盗取. 通信密钥破解,导致接口数据被盗取. 伪造接 ...
- Android开发技术周报176学习记录
Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...
- Android开发技术周报183学习记录
Android开发技术周报183学习记录 教程 Android性能优化来龙去脉总结 记录 一.性能问题常见 内存泄漏.频繁GC.耗电问题.OOM问题. 二.导致性能问题的原因 1.人为在ui线程中做了 ...
- [转载]Android开发常用调试技术记录
ANDROID 调试技术: 1)Ps 指令 ls –l /proc/27/ cat /proc/27/cmdline #cmdline文件表示了这个进程所在的命令行. cat /proc/ ...
- [转载] Android逃逸技术汇编
本文转载自: http://blogs.360.cn/360mobile/2016/10/24/android_escape/ 摘 要 传统逃逸技术涉及网络攻防和病毒分析两大领域,网络攻防领域涉 ...
- Android官方技术文档翻译——清单合并
本文译自Android官方技术文档<Manifest Merger>,原文地址:http://tools.android.com/tech-docs/new-build-system/us ...
- Android官方技术文档翻译——开发工具的构建概述
本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Chec ...
- 解析 Android Things 技术原理
2012 年 6 月,由 IoT-GSI(Global Standards Initiative on Internet of Things)发布的白皮书“ITU-T Y.4000/Y.2060”[1 ...
- 浅谈Android保护技术__代码混淆
浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元 ...
随机推荐
- 常用的MyEclipse快捷键
在调试程序的时候,我们经常需要注释一些代码,在用Myeclipse编程时,就可以用 Ctrl+/ 为选中的一段代码加上以 // 打头的注释:当需要恢复代码功能的时候,又可以用Ctrl+/ 去掉注释.这 ...
- POJ C程序设计进阶 编程题#6:流感传染
编程题#6:流感传染 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 有一批 ...
- IOS绘图——简单三角形
#import <UIKit/UIKit.h> @interface MyView : UIView @end #import "MyView.h" @implemen ...
- Cannot change version of project facet Dynamic web的解决方法
用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的,而一般现 ...
- Dynamic Web Project创建及版本修改的问题
java项目中,若切换服务器,经常会涉及到动态web模块版本的问题. 比如:新建了web项目,开始使用tomcat服务器,但是后来使用jboss服务器,就会出现:Project facet ...
- 深入浅出MongoDB(一)NoSQL
从本文开始,我们一起学习一下MongoDB相关内容,在学习MongoDB之前,首先要做的就是学习NoSQL. 为什么要学习NoSQL,原因很简单,因为MongoDB是NoSQL数据库的一种,换言之,如 ...
- PHP+ajax聊天室源码!支持长轮循跟定时请求两种
var lastID = "1";//声明上次取回的消息的ID var isposted = false; var mGetTime;//设置setTimeout的返回值 // ...
- python 关于 ImportError: No module named 的问题
转载自:http://my.oschina.net/leejun2005/blog/109679 今天在 centos 下安装 python setup.py install 时报错:ImportEr ...
- 命令行工具cmder
1.下载地址 http://bliker.github.io/cmder/ 分为两个版本:mini版和Full版 2.快捷命令配置: 比如,快速启动canssandra/redis数据库服务和查询工具 ...
- 用Java简单实现C#的参数为Action<T> Function<T,boolean>扩展方法
直接上代码 Blog.Java public class Blog { public Blog(int id,String name) { Id=id; Name=name; } public int ...