Android性能优化典例(一)
在Android开发过程中,很多时候往往因为代码的不规范、api使用不恰当、控件的使用场景考虑不全面和用户不恰当的操作等都能引发一系列性能问题的,下面就是我目前整理的一些Android开发过程中需要注意的细节,正所谓一颗老鼠屎可以坏了一锅粥,细节决定成败
下面就是一些性能优化的方案:
1、Android中别使用enum,使用static final 代替枚举enum,因为使用enum比使用static需要消耗更多的内存空间
2、Toast中使用getApplicationContext()来代替当前Activity的Context,如Toast.makeText(getApplicationContext(),"",Toast.LENGTH_SHORT).show();
因为如果使用当前Activity的Context,当用户操作不当时,比如在Toast显示时候按了返回键,而此时Toast又持有当前Activity的Context引用,所以导致内存泄漏
3、Android开发中合理的使用static,因为static的生命和应用的生命一样长,如果该变量可以的话则不要用static修饰,让它和Actiity保持一样的生命周期或者和方法保持一样的生命周期
4、关于网络请求,如果使用的非常频繁则会对用户手机的电量和流量造成比较大的损耗,正所谓应用的开发应把用户体验放在第一位,所以在网络请求方面,应尽量遵循这两个原则:
1、减少移动网络被激活的时间与次数(保证应用功能正常使用的前提下)
2、对一些与用户交互的比较大的数据(图片、文件等),可以对这些数据进行压缩
5、防止内存抖动,所谓内存抖动就是在短时间内创建出大量的对象,从而造成内存紧张,进而触发GC回收,因为执行GC的回收的时候,所有的线程都会暂停,包括主线程,只有等待GC回收完成后其它操作才能继续进行,通常情况下GC回收的效率是非常高效的,但是如果内存上发生大量内存抖动,那么将会导致GC的回收效率降低。所以内存抖动很可能会造成界面卡顿。
防止内存抖动:
1、可以使用对象池来管理对象,减少对象创建的次数,在使用完成之后再手动释放对象池中的对象
2、不要在for、while等循环体中执行对象的创建
3、避免在onDraw()方法中执行对象的创建
4、采用预分配策略来减少一次性创建大量的数据
预分配:就是在程序刚启动的时候就事先创建一些即将要使用到的数据,这样可以在需要使用到这些数据的时候提供更快的加载速度,这种行为就叫做预分配
6、针对自定义View,我们在
- 我们知道调用View.invalidate()会触发View的重绘,有两个原则需要遵守:
1、仅仅在View的内容发生改变的时候才去触发invalidate方法
2、尽量使用ClipRect等方法来提高绘制的性能 - 减少绘制时不必要的绘制元素,对于那些不可见的元素,我们需要尽量避免重绘
- 不要在onDraw()方法中执行内存分配的操作,如:不要在onDraw()方法中执行Paint mPaint = new Paint();等操作
- 对于不在屏幕上的元素,可以使用Canvas.quickReject把他们给剔除,避免浪费CPU资源。另外尽量使用GPU来进行UI的渲染,这样能够极大的提高程序的整体表现性能
Android性能优化典例(一)的更多相关文章
- Android性能优化典例(二)
1.使用 Maven 依赖方案代替使用导入jar包方案 如果项目中需要用到第三方jar包,常用的做法是去网上下载后然后放入libs文件夹,再添加到项目依赖,不过,在Android Studio已经不推 ...
- 老李分享:Android性能优化之内存泄漏1
老李分享:Android性能优化之内存泄漏 前言 对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我 ...
- android 性能优化
本章介绍android高级开发中,对于性能方面的处理.主要包括电量,视图,内存三个性能方面的知识点. 1.视图性能 (1)Overdraw简介 Overdraw就是过度绘制,是指在一帧的时间内(16. ...
- Android性能优化典范第一季
2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关 ...
- [转]Android性能优化典范
2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关 ...
- [Android Pro] Android性能优化典范第一季
reference to : http://www.cnblogs.com/hanyonglu/p/4244035.html#undefined 2015年伊始,Google发布了关于Android性 ...
- Android性能优化之布局优化
最新最准确内容建议直接访问原文:Android性能优化之布局优化 本文为Android性能优化的第二篇——布局优化,主要介绍使用抽象布局标签(include, viewstub, merge).去除不 ...
- Android优化—— Google 发布 Android 性能优化典范
阅读目录 0)Render Performance 1)Understanding Overdraw 2)Understanding VSYNC 3)Tool:Profile GPU Renderin ...
- Android性能优化典范(转)
转载自oschina. 2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍 ...
随机推荐
- DJango内建模板转向jinja2的小脚本
import re,os def org(path=os.getcwd(),fs=None,preview=True): fs = fs or [] for root,dirs,files in os ...
- AP模块NOTE修改API
--创建 AP_NOTES_PUB.Create_Note ( p_api_version IN NUMBER , p_init_msg_list IN VARCHAR2 := FND_API.G_F ...
- [Python]多个装饰器合并
django程序,需要写很多api,每个函数都需要几个装饰器,例如 @csrf_exempt @require_POST def foo(request): pass 既然那么多个方法都需要写2个装饰 ...
- 如何使用《DB 查询分析器》高效地生成旬报货运量数据
如何使用<DB 查询分析器>高效地生成旬报货运量数据 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 1 引言 中国本土 ...
- GDB调试工具入门
从windows转到linux下已经有一段时间了,每次刷算法题碰到问题需要调试的时候,就分分钟想关机,切换到windows上调试.于是,花了一点时间来搜索一下linux下常见的调试工具,这不搜不知道, ...
- Android View框架总结(四)View布局流程之Measure
View树的measure流程 View的measures时序图 View布局流程之measure measure过程 View的measure过程 ViewGroup的measure过程 Frame ...
- UNIX网络编程——进程间通信概述
一.顺序程序与并发程序特征 顺序程序特征 顺序性封闭性:(运行环境的封闭性)确定性可再现性 并发程序特征 共享性并发性随机性 二.进程互斥 1.由于各进程要求共享资源,而且有些资源需要互斥使用,因此各 ...
- TCP/IP 协议简单分析
首先TCP和IP是两种不同的协议,它们来七层网络模型中分别在不同的层次,IP协议是网络层的协议,TCP是更高一层的传输层的协议,TCP是建立在IP协议之上的,所以一般把TCP和IP连在一起说TCP/I ...
- 【设计模式】java设计模式总述及观察者模式
今天在准备腾讯的面试时想起来要复习一下设计模式,而刚好前几天在参加网易的在线考试的时候,也出了一道关于设计模式的选择题,主要是考察观察者模式,虽然那道题自己做对了,但觉得还是应该好好总结一下设计模式的 ...
- 从Eclipse插件中读取资源
可以通过Eclipse里的OSGi的Bundle类,获取插件目录下的某个文件的输入流: 1. Bundle bundle = Platform.getBundle(Activator.PLUGIN_I ...