Android-App性能优化

来源:互联网 发布:中国知网期刊数据库 编辑:程序博客网 时间:2024/05/01 14:15

代码的优化

数据结构的选择

SpareArray代替HashMap

  1. SpareBooleanArray
  2. SpareIntArrary
  3. SpareLongArrary
  4. 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的最大威胁

  1. 使用适当分辨率大小的图片
  2. 及时回收内存 bitmap.recycle();
  3. 使用图片缓存 内存缓存(LruCache)和硬盘缓存(DiskLruCache)

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

  1. 对常量使用static修饰符
  2. 使用静态方法,静态方法比普通方法提高15%左右的访问速度
  3. 减少不必要的成员变量.(在Lint工具做了集成检测了)
  4. 减少不必要的对象,使用基础类型会比使用对象更加节省资源
  5. 尽量不要用枚举类 少用迭代器
  6. 对Cursor Receiver Sensor File等对象,一定要注意他们的创建,回收,注册,解注册
  7. 避免使用IOC框架,因为通常使用注解和反射来实现,会带来性能的下降
  8. 使用RenderScript OpenGL来进行复杂的绘图操作
  9. 使用SurfaceView替代View进行大量 频繁的绘图操作
  10. 尽量使用视图缓存,不是每次都执行inflate()方法解析视图

Lint工具
可以给布局 代码提供强大的帮助.
Memory Monitor工具
TraceView工具优化APP性能
Debug类方法开启TraceView监听

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

开始和结束包围要监听的代码块
MAT工具分析App内存状态

0 0
原创粉丝点击