Skip to content

Latest commit

 

History

History
33 lines (28 loc) · 2.51 KB

桌面优化总结.md

File metadata and controls

33 lines (28 loc) · 2.51 KB

桌面优化总结

工具

  • adb shell procrank 查看所有进程的内存使用情况,包括Vss,Rss,Pss,Uss;
  • Android Studio DDMS Heap,Heap是内存检测工具,可以检测应用进程内存使用的详细情况;
  • Android Studio的Android Profiler,实时显示应用进程的内存信息,方便捕捉造成OOM的操作;
  • 打印标记Log、堆栈信息,跟踪代码执行路径,查找错误,调试代码逻辑;

优化

  • 1.频繁刷新:最主要原因。桌面操作较多无用的全局刷新,占用较多资源,非常耗时;

    • 单击桌面图标,反白延迟:用户每次点击桌面图标都会调用notifyDataSetChanged全局刷新,达到反白效果; 优化:根据图标背景设置的selector选择器即可实现反白,不需要全局刷新;
    • 新建、粘贴文件或文件夹延迟:在文件监听通知有新文件出现时,同样是调用全局刷新; 优化:根据文件所在位置索引值,可通过调用局部刷新仅刷新指定位置,实现数据更新;
    • 右键菜单延迟:用户点击右键展示菜单的同时会选中图标,与上述反白问题原因相同; 优化:解决反白问题后,右键延迟也基本解决;
  • 2.代码冗余:部分操作的处理代码较为冗余;

    • 桌面图标点击事件:因本身较为复杂,包括内容item,空白item,边框,计算机和回收站等,以及各自的单击、双击、右键、长按、框选等, 设计的逻辑需要考虑到各种情况,且代码经过多人多次修改; 优化:item与边框点击事件分开各自处理,删除不必要的标记,简化流程;
    • 删除操作两次通知刷新数据,分别为确认删除后的手动刷新和文件监听处的刷新; 优化:测试发现文件监听处的刷新通知速度较快,保留,去掉手动刷新;
  • 3.RecyclerView控件自身原因:桌面布局采用RecyclerView,虽然功能相对ListView和GridView较完善,但逻辑更复杂, 代码执行可能需要绕更多路;后期会对RecyclerView源码做精简,删除不需要的处理;

后期计划

  • 取消所有对RecyclerView的全局刷新和局部刷新,在数据集的更新的同时替换需要刷新位置的view;
  • 调研桌面图标长按事件,现有的代码由于长按事件无法获取,采用原生长按事件的实现方式,较为复杂,代码重构后考虑重新调研可行性;
  • RecycleView 代码精简
  • wallpaper壁纸部分代码精简
  • 文件管理器,桌面增加aidl功能。