优化App性能的20个建议

上传人:d**** 文档编号:202421774 上传时间:2023-04-22 格式:DOCX 页数:6 大小:46.04KB
收藏 版权申诉 举报 下载
优化App性能的20个建议_第1页
第1页 / 共6页
优化App性能的20个建议_第2页
第2页 / 共6页
优化App性能的20个建议_第3页
第3页 / 共6页
资源描述:

《优化App性能的20个建议》由会员分享,可在线阅读,更多相关《优化App性能的20个建议(6页珍藏版)》请在装配图网上搜索。

1、优化App性能的20个建议你的app为什么会卡?为什么占用大内存?应该怎么解决?今天这20条建议,给你 答案。l.itmap的合理使用:使用Bitmap过后,就需要及时的调用recycle()方法来释放Bitmap占用的内存空间, 而不要等Android系统来进行释放。代码示例:/先判断是否已经回收if(bitmap != null & !bitmap.isRecycled()bitmap.recycle();bitmap = null;System.gc();2.对常量使用staticfinal修饰符static final int intVal = 42;static final Stri

2、ng strVal = “Hello, world!”;将一个方法或类声明为final不会带来性能的提升,但是会帮助编译器优化代码。举例说,如果编译器知道一个getter方法不会被重载,那么编译器会对其采用内联调用。第1页/共5页3. 静态方法代替虚拟方法如果不需要访问某对象的字段,将方法设置为静态,调用会加速15%到20%。这也是 一种好的做法,因为你可以从方法声明中看出调用该方法不需要更新此对象的状态。4. 减少不必要的全局变量尽量避免static成员变量引用资源耗费过多的实例,比如Context,因为Context的引 用超过它本身的生命周期,会导致Context泄漏。所以尽量使用App

3、lication这种Context 类型。可以通过调用 Context.getApplicationContext()或 Activity.getApplication()轻松得到 Application 对象。5. 避免创建不必要的对象:就是避免创建短命的临时对象。减少对象的创建就能减少垃圾收集,进而减少对用 户体验的影响。例如:频繁操作一个字符串时,使用StringBuffer代替Stringo6. 对于所有所有基本类型的组合:int数组比Integer数组好,这也概括了一个基本事实,两个平行的int数组比(int,int) 对象数组性能要好很多。.避免使用浮点数。通常的经验是,在Andr

4、oid设备中,浮点数会比整型慢两倍。7. 使用实体类比接口好假设你有一个HashMap对象,你可以将它声明为HashMap或者Map:Map map1 = new HashMap();HashMap map2 = new HashMap();哪个更好呢?按照传统的观点Map会更好些,因为这样你可以改变他的具体实现类,只要这个类 继承自Map接口。传统的观点对于传统的程序是正确的,但是它并不适合嵌入式系统。 调用一个接口的引用会比调用实体类的引用多花费一倍的时间。如果HashMap完全适合 你的程序,那么使用Map就没有什么价值。如果有些地方你不能确定,先避免使用Map,剩下的交给IDE提供的重

5、构功能好了。(当然公共API是一个例外:一个好的API常常会 牺牲一些性能)8. 访问成员变量比访问本地变量慢得多for循环:不要在for的第二个条件中调用任何方法反例:for(int i =0; i this.getCount(); i+) 正例:int count = this.mCount; int count = this.getCount();for(int i =0; i count; i+) 9. 资源类对象在不使用的时候,应该及时关闭它们,方便它们的 缓存数据能够及时回收。例如:Cursor、File文件等都需要在finally中关闭资源性对象,避免在异常情况下资 源对象未被释

6、放的隐患10. 注册广播接收器、注册观察者等需要在不使用的时候取消注To例如:假设在Activity中,监听系统的电话服务,可以在Activity中定义一个 PhoneStateListener的对象,同时将它注册到TelephoneManager服务中。对于Activity对 象,理论上要求Activity退出后该Activity的对象就会被释放掉。但是如果在释放Activity 对象时,忘记取消之前注册的PhoneStateListener对象,则会导致Activity无法被GC回收。 如果不断的进出这个Activity,则最终会由于大量的Activity对象没有办法被回收而引起 频繁的G

7、C情况,甚至导致Out Of Memoryo11. 有效的利用系统自带的资源。Android系统内置了大量的资源,比如字串、颜色定义、常用Icon图片、动画样式、 及简单的布局,没有特殊要求,资源可以在程序中直接引用。这样不仅减少内存的开销, 还可以减少apk的大小。12.视图复用。使用ViewHolder实现ConvertView复用,这基本上是所有容器控件的处理方式,如ListView、GridView 等。13.使用最优的数据类型。比较少的对象数时,ArrayMap替换HashMap的使用,避免使用枚举,枚举变量非常 方便,但不幸的是它会牺牲执行的速度和并大幅增加文件体积。14. 图片内

8、存优化Android提供的多种位图格式中,最高的是RGB_8888,也是系统默认的位图格式, 其他几种都减少位图通道,可以减少内存开销,如一些局部图片、小屏幕手机或者对图 片质量要求不高的场景,均可以使用RGB_565,或者ARGB_ 4444等图像格式。图片缩放:inSampleSize、inScaled、inDensity 和 inTargetDensity位图内存重用:inBitmap的使用,可以结合LruCache实现。推荐开源库:picasso、Glide15. Android网络通信框架Volley。16. 对象池、线程池的合理使用。17. 使用 IntentService 替代

9、Service。IntentService优势:新开线程;顺序处理Intent;执行完自动退出。18. 尽量不要因一两个特性而使用大体积类库。19.对象不用时最好显式置为Null可以减少GC开销。20.多了解并使用类库。一些例子1.当处理字串的时候,尽量使用String.indexOf(),String.lastIndexOf()等特殊实现的方 法。这些方法都是使用C/C+实现的,比起Java循环快10到100倍。第4页/共5页2. System.arraycopy方法在有JIT的Nexus One上,自行编码的循环快9倍。3. android.text.format包下的Formatter类

10、,提供了 IP地址转换、文件大小转换等方 法;DateFormat类,提供了各种时间转换,都是非常高效的方法。4. TextUtils类,对于字符串处理Android为我们提供了一个简单实用的TextUtils类, 如果处理比较简单的内容不用去思考正则表达式不妨试试这个在android.text.TextUtils的 类。5. 高性能MemoryFile类,对于I/O需要频繁操作的,主要是和外部存储相关的I/O 操作,MemoryFile通过将NAND或SD卡上的文件,分段映射到内存中进行修改处理, 这样就用高速的RAM代替了 ROM或SD卡,性能自然提高不少,对于Android手机而言 同时还减少了电量消耗。该类实现的功能不是很多,直接从Object上继承,通过JNI的 方式直接在C底层执行。内存优化工具:推荐内存分析工具:Memory Monitor 适用于Android Studio推荐内存泄露分析工作:MAT适用于eclipse、Android Studio内存泄露监控工具:LeakCanary来源:(风少学院官网)欢迎一起交流学习。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!