1.优化布局

(1)减少布局嵌套,VIew树的高度不超过10层,使用RelativeLayout可以提高渲染的效率

(2)使用标签重用布局

(3)使用ViewStub延迟加载

(4)github开源工具检测布局

2.内存优化

获取应用程序最大内存//128MB

int maxMemory=(int)(Runtime.getRuntime().maxMemory()/1024);

获取手机堆内存大小 MB

int memClass=((ActivityManager)getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();

int maxMemory=(int)(Runtime.getRuntime().maxMemory()/1024);//得到应用程序最大内存的kb大小

Log.d(TAG, maxMemory+””);

int memClass=((ActivityManager)getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();//得到手机最大堆内存的大小,java heap最大值

Log.d(TAG, memClass+””);

Runtime runtime=Runtime.getRuntime();

//字节大小

long maxHeap=runtime.maxMemory();//最大java heap最大值

Log.d(TAG, “maxMemory”+maxHeap+””);

long freeMemory=runtime.freeMemory();//获取申请但未使用java heap,单位byte

Log.d(TAG, “freeMemory”+freeMemory);

long usedMemory=runtime.totalMemory();//获取已经申请的全部内存

Log.d(TAG, “totalMemory”+usedMemory);

long haveusedMemory=runtime.totalMemory()-runtime.freeMemory();//已经使用的heap内存

Log.d(TAG, “haveusedMemory”+haveusedMemory);

long availableMemory=runtime.maxMemory()-runtime.totalMemory()+runtime.freeMemory();//当前可new出来的最大内存

Log.d(TAG, “availableMemory”+availableMemory);

(1)堆内存:堆内存用来存放new创建的对象和数组,由虚拟机的垃圾回收器GC管理。调用System.gc()方法可以建议系统回收,但是开发者无法控制。

(2)Bitmap优化 在Bitmap对象使用结束时及时调用bitmap.recycle()方法释放资源;通过内存缓存(LruCache)和磁盘缓存(DiskLruCache)更好的使用(推荐使用Glide框架)

(3)代码优化

常量使用static修饰符

static方法可以提高访问速度

尽量使用局部变量代替成员变量(as自带提醒)

减少对象的使用,尽量使用基础类型 eg: Sting s; better than String s = new String();(装拆箱)

不使用枚举!!(很消耗内存) 减少使用Iterator

Cursor、Receiver、Sensor、File等内存大户的创建、回收、注册和解注册

避免使用IOC注解???(待理解)

利用SurfaceView代替View来进行绘图操作

View inflate后及时缓存 不用每次都去解析视图

3.Lint工具

4.Android Studio自带的Mrmory Monitor工具

5.使用TraceView工具优化

6.使用MAT工具分析应用内存

7.使用Dumpsys分析系统状态

本文地址: http://www.yppcat.top/2019/01/29/android性能优化/