前言
我们都知道 Android Studio 里内置了 Profiler
tool 供大家对 App 在 Memory、CPU、Network、Power 等角度进行 dump 和分析。
但如果一个内存相关的 bug 是运行时发生的,而且很难复现,那么后期就很难准确定位发生时的具体状况。
值得兴奋的是 Android 15 将直面这个痛点:引入了 ProfilingManager
API,允许 app 对 Memory 进行动态的、随时随地的 dump。
生成的文件默认存在本地,也可以通过网络传递到 offboard,方便开发者事后回溯。
API 说明
ProfilingManager
主要提供了 3 个方法。
registerForAllProfilingResults
注册 profiling 请求的回调和执行的线程,需要如下两个参数:
Parameters | Descriptions |
---|---|
executor |
Executor : 回调执行的线程池实例,不可为空 |
listener |
Consumer : 携带 profiling 结果的 listener 实例,不可为空 |
unregisterForAllProfilingResults
注销 profiling 请求的回调,如果没有指定 listener 参数的话,将移除所有 callback。
Parameters | Descriptions |
---|---|
listener |
Consumer : 待移除的回调,null 的话移除所有 |
requestProfiling
请求进行一次 profiling 操作,有非常详细的参数可供设置:
Parameters | Descriptions |
---|---|
profilingType |
int : profiling 操作的类型,主要包括 dump Java 堆的 PROFILING_TYPE_JAVA_HEAP_DUMP ,dump 堆的 PROFILING_TYPE_HEAP_PROFILE , dump 栈的 PROFILING_TYPE_STACK_SAMPLING 和 dump 系统 trace 的PROFILING_TYPE_SYSTEM_TRACE ,参数不能为空。 | </