ResourceManagerService (4.2) reclaimResource

根据请求的资源,尝试从 优先级低于调用进程的进程 中回收资源。
这里的优先级从 processinfo 服务获取, 通过进程状态计算

  • 应用调用 reclaimResource

接口:

应用调用 reclaimResource 的流程

1.0 MediaCodec 调用 reclaimResource

在 init start configure 的时候会调用

2.0 ResourceManagerService::reclaimResource 找到适合释放的低优先级 IResourceManagerClient

被释放目标: 会优先找自己进程内相同类型的资源. 找不到, 就会找最低优先级的进程内的资源

2.1 ResourceManagerService::getAllClients_l

2.2 ResourceManagerService::getClientForResource_l

2.3 ResourceManagerService::getPriority_l

2.4 ProcessInfo::getPriority

3.0 调用 IResourceManagerClient 的 reclaimResource

4.0 IResourceManagerClient.reclaimResource

以 MediaCodec 为例

5.0 MediaCodec::reclaim

触发处理 kWhatRelease 事件

6.0 MediaCodec kWhatRelease 事件处理

0 Comments
Leave a Reply