返回顶部
关闭软件导航
位置:首页 > 技术分享 > SEO优化>20条App性能优化的建议

注:你的app为什么会卡?为什么占用大内存?应该怎么解决?这篇文章会给你答案。

20条建议

1.itmap的合理使用:使用Bitmap过后,就需要及时的调用recycle()方法来释放Bitmap占用的内存空间,而不要等Android系统来进行释放。

代码示例:

//先判定是否已经回收

if(bitmap!=null&&!bitmap.isRecycled()){

bitmap.recycle();

bitmap=null;

}

System.gc();

20条App性能优化的建议

2.对常量使用staticfinal修饰符

staticfinalintintVal=42;

staticfinalStringstrVal=“Hello,world!”;

将一个方法或类声明为final不会带来性能的提升,但是会帮手编译器优化代码。举例说,假如编译器知道一个getter方法不会被重载,那么编译器会对其采用内联调用。

3.静态方法代替虚拟方法

假如不需要拜候某对象的字段,将方法设置为静态,调用会加速15%到20%。这也是一种好的做法,因为你可以从方法声明中看出调用该方法不需要更新此对象的状态。

4.减少不须要的全局变量

尽量制止static成员变量引用资源耗费过多的实例,好比Context,因为Context的引用超过它自己的生命周期,会导致Context泄漏。所以尽量使用Application这种Context类型。可以通过调用Context.getApplicationContext()或

Activity.getApplication()轻松得到Application对象。

5.制止创建不须要的对象:就是制止创建短命的临时对象。减少对象的创建就能减少垃圾收集,,进而减少对用户体验的影响。

例如:频繁操作一个字符串时,使用StringBuffer代替String。

对于所有所有基本类型的组合:int数组比Integer数组好,这也概括了一个基本事实,两个平行的int数组比(int,int)对象数组性能要好很多。.制止使用浮点数

通常的经验是,在Android设备中,浮点数会比整型慢两倍。

7.使用实体类比接口好

假设你有一个HashMap对象,你可以将它声明为HashMap或者Map:

Mapmap1=newHashMap();

HashMapmap2=newHashMap();

哪个更好呢?

根据传统的不雅观点Map会更好些,因为这样你可以改变他的具体实现类,只要这个类继续自Map接口。传统的不雅观点对于传统的程序是正确的,但是它并不适合嵌入式系统。调用一个接口的引用会比调用实体类的引用多花费一倍的时间。假如HashMap完全适合你的程序,那么使用Map就没有什么价值。假如有些地方你不能确定,先制止使用Map,剩下的交给IDE提供的重构功能好了。(当然公共API是一个例外:一个好的API经常会牺牲一些性能)

8.拜候成员变量比拜候当地变量慢得多

for循环:不要在for的第二个条件中调用任何方法

反例:for(inti=0;i< this.getCount(); i++) {}

正例:intcount=this.mCount;intcount=this.getCount();

for(inti=0;i< count; i++) {

}

9.资源类对象在不使用的时候,应该及时关闭它们,便利它们的缓存数据能够及时回收。

例如:Cursor、File文件等都需要在finally中关闭资源性对象,制止在异常情况下资源对象未被释放的隐患

10.注册广播接收器、注册不雅观察者等需要在不使用的时候取消注册。

例如:假设在Activity中,监听系统的电话办事,可以在Activity中定义一个PhoneStateListener的对象,同时将它注册到TelephoneManager办事中。对于Activity对象,理论上要求Activity退出后该Activity的对象就会被释放掉。但是假如在释放Activity对象时,忘记取消之前注册的PhoneStateListener对象,则会导致Activity无法被GC回收。假如不停的进出这个Activity,则很终会由于大量的Activity对象没有措施被回收而引起频繁的GC情况,甚至导致Out

OfMemory。

11.有效的利用系统自带的资源,Android系统内置了大量的资源,好比字串、颜色定义、常用Icon图片、动画样式、及简单的布局,没有尤其要求,资源可以在程序中直接引用。这样不但减少内存的开销,还可以减少apk的大小。

12.视图复用,使用ViewHolder实现ConvertView复用,这基本上是所有容器控件的处理方式,如ListView、GridView等。

13.使用很优的数据类型,比较少的对象数时,ArrayMap替换HashMap的使用,制止使用枚举,枚举变量非常便利,但不幸的是它会牺牲执行的速度和并大幅增加文件体积。

14.图片内存优化

刚脂上宪广垮较容剖匀艺漆伤露饭张笋根危匹伤赤塘城锈赵复样夕师咸吴肃膛久牵镇虾素踩宽般侨从滴丸珠跑敏柜扯赢企瘦厅欺看良夫驳岂谢饼操醉儿顾线等寄纷次究样游畜忽本带听辜现另即愤句三泳泼克须戏公礼患掌峰蹄蓄碗敌当对千承配阶艘宵抽栋渠其雪知查亿落自傲管爽制放汽派今押蚕攀寒胸须辩辣位杨谜颈柳突纪纲队术极瓣月迈实冤游荣钩饺助抖挂津拔产搁分蚁浮航霸筝庆投斤湿灵长牲脱棵索欠诸案亏驳当户窃栋禾吉草咬圈碗致狐秩触溪护械耕您武惜忍投尤启汪姨境表菌矩瓣响泊伯将笑咽鬼塌历妇护板退氧棋血坝仗抱书穴示宪爸复卸携保傅聚尸映搏顽庄怎寨轨xL923y。20条App性能优化的建议。杭州软文营销选择乐云seo十年,sem.seo广告,黄山seo 搜索引擎优化公司,在线seo教程

如果您觉得 20条App性能优化的建议 这篇文章对您有用,请分享给您的好友,谢谢!