Update 性能优化口水话.md

master
Omooo 4 years ago
parent c24bb3cf50
commit 6fea9d27e8
  1. 7
      blogs/Android/口水话/性能优化口水话.md

@ -6,6 +6,7 @@
1. 包体积优化
2. 布局优化
3. 内存优化
#### 包体积优化
@ -35,7 +36,13 @@ Apk 包主要分为几个部分,libs so 库、dex、res、assets、resources.a
最后,布局优化还不能忽略后期的维护性,比如最好不要使用 LinearLayout,布局也可以写适当的注释,可以写适当的 tools 属性利于预览,当布局代码很多时,可以使用 editor-fold 来折叠代码块。
#### 内存优化
内存优化分为内存泄露和内存抖动。
内存泄露我主要的排查思路是使用 LeakCanary + Android Profiler。LeakCanary 平时是一直开着的,在任务的收尾阶段我会跑一下 Android Profiler。打开关闭页面来来回回五六次,看一下 Total Memory 有没有明显升高,然后看一下对应的实例对象有没有被销毁。
在做积分商城时,有一个编辑地址页面,里面有三个 EditText 并设置了 TextChangedListener,在跑 Profiler 时发现页面已经退出了但是还存在三个该 Activity 的应用,并且都定位到了 TextWatcher 那一行,然后我试了强制 gc 在退回桌面还是存在,说明是内存泄露了。但是大家一直都这么写,并没有在 onDestory 时去移除 Listener 呀。我的测试机是三星 7,然后我试了一下我的小米 9,发现就没问题了。初步怀疑是系统 bug,然后我用 Google 的模拟器,实际测试一下 Android 8 以上没有问题,以下就存在内存泄露。但是项目中很多这样的,解决办法就是可以在 BaseActivity 的 onDestory 去遍历 View 树清空 Listener。

Loading…
Cancel
Save