ResourceManagerService 是Android中的编解码器资源管理的服务,负责资源的创建,回收等
代码路径如下
/frameworks/av/services/mediaresourcemanager/
frameworks/av/services/mediaresourcemanager/aidl/android/media/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZDXFkp8-1642948923751)(img/image-20220123211218654.png)]
frameworks/av/services/mediaresourcemanager/aidl/android/media/IResourceManagerClient.aidl
frameworks/av/services/mediaresourcemanager/aidl/android/media/IResourceManagerService.aidl
我们按照 ResourceManagerService 生命周期的脉络来分析源代码
ResourceManagerService 服务注册
- 服务注册的代码位置
frameworks/av/media/mediaserver/main_mediaserver.cpp
int main(int argc __unused, char **argv __unused)
{
......
ResourceManagerService::instantiate();// 将服务注册到ServiceManager中,对外开放服务
......
}
- 来看 ResourceManagerService::instantiate() 的实现:
frameworks/av/services/mediaresourcemanager/ResourceManagerService.cpp
//static
void ResourceManagerService::instantiate() {
// C++ 标准智能指针,调用ResourceManagerService默认构造函数创建 ResourceManagerService 对象
//调用两个参数的构造函数,传入初始化的ProcessInfo 和 SystemCallbackImpl 两个对象
std