您的位置:首页 > 移动开发

Android-App性能优化

2017-01-05 22:08 281 查看

代码的优化

数据结构的选择

SpareArray代替HashMap

SpareBooleanArray

SpareIntArrary

SpareLongArrary

SpareArray <.String.>

SpareArray线程不安全的

要进行二分查找,SpareArray会对插入的数据按照Key值大小顺序插入

对删除做了优化 不会立即删除而是通过设置标识位(DELETED)方式.

Handler和内部类的正确用法

待补充

Context的正确使用

//待补充

Java的四种引用方式

强 软 弱 虚

图片的优化

布局的优化

优化布局层级

降低View树的高度,建议不超过10层

RelativeLayout相对LineraLayout更能够减少树的高度.

使用<.include>标签重用Layout

在很多共通的UI上,可以建立一个简单的布局,通过<.include>标签的layout属性添加布局,并通过android:layout_XXXX的属性来设置特征.

使用<.ViewStub>实现View的延迟加载 ViewStub是XML中的标签,

ViewStub标签和View.GONE的区别 View.GONE在初始化布局树的时候就已经添加了,ViewStub只有在显示的时候才渲染整个布局

mViewStub= (ViewStub) findViewById(R.id.veiwStub);

//第一种方式

mViewStub.setVisibility(View.VISIBLE);

//第二种方式

View inflateView=mViewStub.inflate();

//第二种方式的区别就是可以返回引用的布局

TextView textView= (TextView) inflateView.findViewById(R.id.tv);

textView.setText("Panda");


通过Hierarchy Viewer工具进行布局的优化

内存的优化

所谓的内存分析是在堆(Heap),分析内存状态

ActivityManager manager=
(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
int heapSize=manager.getLargeMemoryClass();


获取内存的信息

1.process stats

通过’Setting-Developer options-Process Stats来开启该功能

命令:adb shell dumpsys procstats

2.Meminfo

可以通过setting-apps-running打开

命令:adb shell dumpsys meminfo

Bitmap的优化

Bitmap是造成内存占用过高和OOM的最大威胁

使用适当分辨率大小的图片

及时回收内存 bitmap.recycle();

使用图片缓存 内存缓存(LruCache)和硬盘缓存(DiskLruCache)

代码的优化

创建一个类的实例会消耗大概15字节的内存,优化总结如下:

对常量使用static修饰符

使用静态方法,静态方法比普通方法提高15%左右的访问速度

减少不必要的成员变量.(在Lint工具做了集成检测了)

减少不必要的对象,使用基础类型会比使用对象更加节省资源

尽量不要用枚举类 少用迭代器

对Cursor Receiver Sensor File等对象,一定要注意他们的创建,回收,注册,解注册

避免使用IOC框架,因为通常使用注解和反射来实现,会带来性能的下降

使用RenderScript OpenGL来进行复杂的绘图操作

使用SurfaceView替代View进行大量 频繁的绘图操作

尽量使用视图缓存,不是每次都执行inflate()方法解析视图

Lint工具

可以给布局 代码提供强大的帮助.

Memory Monitor工具

TraceView工具优化APP性能

Debug类方法开启TraceView监听

Debug.startMethodTracing();
Debug.stopMethodTracing();


开始和结束包围要监听的代码块

MAT工具分析App内存状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  性能优化 优化