mmat
mmat copied to clipboard
按多次返回并没有回到桌面
通过am start跳转到首页后,按2次返回并没有回到桌面,而是继续返回到之前的页面,这个时候去dump内存分析并不能说明是内存泄露,这个流程有更好的优化方案吗
"am start跳转到首页后, 按2次返回并没有回到桌面,而是继续返回到之前的页面" 可能是因为 launchMode 的问题,你可以看看项目readme 中的相关说明。
"am start跳转到首页后, 按2次返回并没有回到桌面,而是继续返回到之前的页面" 可能是因为 launchMode 的问题,你可以看看项目readme 中的相关说明。
是的,对于这种主页面的launchMode不能设置成singleTask的,那就不停点击返回回到主页直到回到桌面吗?
"am start跳转到首页后, 按2次返回并没有回到桌面,而是继续返回到之前的页面" 可能是因为 launchMode 的问题,你可以看看项目readme 中的相关说明。
是的,对于这种主页面的launchMode不能设置成singleTask的,那就不停点击返回回到主页直到回到桌面吗?
你可以在debug 编译模式时加上launchMode="singleTask", 而在 release 模式下保持你想要的模式。这样你既可以测试,又不会破坏你发布版的功能. 或者你创建一个专门用于测试的 flavor, 在这个 flavor 中设置launchMode="singleTask",这样会更加合理。我暂时还没有找到除了 singleTask 之外的更好的方法.
在mmat plugin 0.9.2 中, 你可以自己操作你的app, 然后进入到各个要测试内存泄漏的页面, 最后再挨个退出,直到所有页面都销毁, app 进入到后台. 最后执行 ./gradlew startMmatSilently
, 此时就会直接dump 内存快照,然后进行内存分析. 这种方式就是没有用了 Monkey的自动化测试, 也不需要通过 adb shell 将app退到后台,只是需要你自己手动进入到各个页面,并且退出。然后再执行内存 ./gradlew startMmatSilently
,最终得到内存分析报告。
其实 Monkey的作用只是自动化的随机操作app, 使得app进入各个页面, 在快速操作的过程中又容易引发内存泄漏. Monkey 执行完毕之后再通过 adb shell + launchMode="singleTask", 将app的所有Activity关闭,并且使得app进入到后台状态,最后再dump 内存快照进行分析。整体流程为:
- 进入、退出各个Activity (可以自动化,也可以手动操作)
- App 进入到后台状态 (此时应该没有Activity实例)
- dump 内存快照
- 对内存快照进行分析,得到内存泄漏报告
只要完成上述流程即可,至于如何做到并没有强制的要求。可以分析或者修改MMAT中的代码达到自己想要的效果