20条App性能优化的建议
注你的app为什么会卡?为什么占用大内存?应该怎么解决?这篇文章会给你答案。
20 条建议1. itmap的合理使用使用Bitmap过后,就需要及时的调用recycle()方法来释放Bitmap占用的内存空间,而不要等Android系统来进行释放。
代码示例
// 先判断是否已经回收
if(bitmap != null && !bitmap.isRecycled()){
bitmap.recycle();
bitmap = null;
}
System.gc();
2. 对常量使用static fal修饰符
static fal t tVal = 42;
static fal Strg strVal = “Hello, world!”;
将一个方法或类声明为fal不会带来性能的提升,会帮手编译器优化代码。举例说,如果编译器知道一个getter方法不会被重载,那么编译器会对其采用内联调用。
3. 静态方法代替虚拟方法
如果不需要拜候某对象的字段,将方法设置为静态,调用会加速15%到20%。这也是一种好的做法,因为你可以从方法声明中看出调用该方法不需要更新此对象的状态。
4. 减少不须要的全局变量
尽量制止static成员变量引用资源耗费过多的实例,好比Context,因为Context的引用超过它自己的生命周期,会导致Context泄漏。所以尽量使用Application这种Context类型。 可以通过调用Context.getApplicationContext()或 Activity.getApplication()轻松得到Application对象。
5. 制止创建不须要的对象 就是制止创建短命的临时对象。减少对象的创建就能减少垃圾收集,,进而减少对用户体验的影响。
例如频繁操作一个字符串时,使用StrgBuffer代替Strg。
对于所有所有基本类型的组合t数组比Integer数组好,这也概括了一个基本事实,两个平行的t数组比 (t,t)对象数组性能要好很多。.制止使用浮点数
通常的经验是,在Android设备中,浮点数会比整型慢两倍。
7. 使用实体类比接口好
假设你有一个HashMap对象,你可以将它声明为HashMap或者Map
Map map1 = new HashMap();
HashMap map2 = new HashMap();
哪个更好呢?
根据传统的不雅观点Map会更好些,因为这样你可以改变他的具体实现类,只要这个类继承自Map接口。传统的不雅观点对于传统的程序是正确的,它并不适合嵌入式系统。调用一个接口的引用会比调用实体类的引用多花费一倍的时间。如果HashMap完全适合你的程序,那么使用Map就没有什么价值。如果有些地方你不能确定,先制止使用Map,剩下的交给IDE提供的重构功能好了。(公共API是一个例外一个好的API常常会牺牲一些性能)
8. 拜候成员变量比拜候当地变量慢得多
for循环不要在for的第二个条件中调用任何方法
反例for(t i =0; i < this.getCount(); i++) {}
正例t count = this.mCount; t count = this.getCount();
for(t i =0; i < count; i++) {
}
9. 资源类对象在不使用的时候,应该及时关闭它们,便利它们的缓存数据能够及时回收。
例如Cursor、File文件等都需要在fally中关闭资源性对象,制止在异常情况下资源对象未被释放的隐患
10. 注册广播接收器、注册不雅观察者等需要在不使用的时候取消注册。
例如假设在Activity中,监听系统的电话办事,可以在Activity中定义一个PhoneStateListener的对象,将它注册到TelephoneManager办事中。对于Activity对象,理论上要求Activity退出后该Activity的对象就会被释放掉。如果在释放Activity对象时,忘记取消之前注册的PhoneStateListener对象,则会导致Activity无法被GC回收。如果不停的进出这个Activity,则最终会由于大量的Activity对象没有措施被回收而引起频繁的GC情况,甚至导致Out Of Memory。
11. 有效的利用系统自带的资源,Android系统内置了大量的资源,好比字串、颜色定义、常用Icon图片、动画样式、及简单的布局,没有特殊要求,资源可以在程序中直接引用。这样不但减少内存的开销,还可以减少apk的大小。
12. 视图复用,使用ViewHolder实现ConvertView复用,这基本上是所有容器控件的处理方式,如ListView、GridView等。
13. 使用最优的数据类型,比较少的对象数时,ArrayMap替换HashMap的使用,制止使用枚举,枚举变量非常便利,但不幸的是它会牺牲执行的速度和并大幅增加文件体积。
14. 图片内存优化
网站seo
- 国际顶级域名有哪些 国家顶级域名和国际顶级域
- 关于域名注册你要了解的几点 选择域名不再随意
- 越南服务器租用哪家好
- 奇台百度关键词排名 全面解析与优化策略
- 邯郸网站建设多少钱 全面解析成本与价值
- 域名注册什么技巧 如何选择域名
- 未来域名还有价值吗 会不会被取代呢
- DNS解析之哪些情况要添加A记录与CNAME记录
- 尚志网站建设多少钱 全面解析价格因素与服务
- 红桥建站公司 为您打造完美网站的最佳选择
- .pub域名如何注册 规则是什么
- 搭建跨境电商独立站平台要注意什么
- 弥勒SEO网站推广 提升您网站流量的有效策略
- 怎么买域名自己做网站 有什么方法
- 域名什么理由会仲裁 如何避免域名仲裁
- 浙江网站优化公司的注意事项有哪些