在使用AVSession的过程中,发现avSession的创建偶尔会出错,错误码6600101,通常是上一次成功创建session destroy后再次创建出现错误,在业务中的流程是:createAVSession -\>this.session!.activate() -\> this.session?.destroy() -\> createAVSession。模拟代码简化后如下:
this.session = await AVSessionManager.createAVSession(getContext(this), "TocSessionTag", type??'video')
.catch((err: BusinessError) => {
PlayerLog.info(BizTag, "Media.AVSession-1", `Failed to create AVSession, error info: ${JSON.stringify(err)}`);
ret = false;
return null;
});
this.registerListener();
await this.session!.activate().catch((err: BusinessError) => {
PlayerLog.info(BizTag, "Media.AVSession-1", `Failed to activate AVSession, error info: ${JSON.stringify(err)}`);
ret = false;
});
if (type === 'video') {
this.session?.setExtras({requireAbilityList: ['url-cast']});
}
this.session?.destroy()
this.session = await AVSessionManager.createAVSession(getContext(this), "TocSessionTag", type??'video')
.catch((err: BusinessError) => {
PlayerLog.info(BizTag, "Media.AVSession-2", `Failed to create AVSession, error info: ${JSON.stringify(err)}`);
ret = false;
return null;
});
错误日志如下:
08-28 16:21:35.756 46078-46078 C02B91/ ....hm/AVSession news.hm I [Enqueue()-napi_async_work.cpp:81] name=CreateAVSession
08-28 16:21:35.757 46078-47858 C02B91/ ....hm/AVSession news.hm I [AVSessionServiceProxy()-avsession_service_proxy.cpp:29] constructor
08-28 16:21:35.758 46078-47858 C02B91/ ....hm/AVSession news.hm I [RegisterClientDeathObserver()-avsession_manager_impl.cpp:363] success
08-28 16:21:35.770 46078-46078 C02B91/ ....hm/AVSession news.hm I [NapiAVSession()-napi_avsession.cpp:92] construct
08-28 16:21:35.771 46078-46078 C02B91/ ....hm/AVSession news.hm I [NewInstance()-napi_avsession.cpp:171] sessionId=CB0C1F68F82AF19C60C2FC1DB912E097B40CA220CAE04CEF6ECE7F986D125F66, sessionType:video
08-28 16:21:35.771 46078-46078 C02B91/ ....hm/AVSession news.hm I [NapiAVSessionCallback()-napi_avsession_callback.cpp:24] construct NapiAVSessionCallback
08-28 16:21:35.771 46078-46078 C02B91/ ....hm/AVSession news.hm I [AddSupportCommand()-avsession_proxy.cpp:717] add support command for 0
08-28 16:21:35.771 46078-46078 C02B91/ ....hm/AVSession news.hm I [AddCallback()-napi_avsession_callback.cpp:282] Add callback 0
08-28 16:21:35.771 46078-46078 C02B91/ ....hm/AVSession news.hm I [AddSupportCommand()-avsession_proxy.cpp:717] add support command for 1
08-28 16:21:35.771 46078-46078 C02B91/ ....hm/AVSession news.hm I [AddCallback()-napi_avsession_callback.cpp:282] Add callback 1
08-28 16:21:35.771 46078-46078 C02B91/ ....hm/AVSession news.hm I [AddSupportCommand()-avsession_proxy.cpp:717] add support command for 3
08-28 16:21:35.771 46078-46078 C02B91/ ....hm/AVSession news.hm I [AddCallback()-napi_avsession_callback.cpp:282] Add callback 3
08-28 16:21:35.771 46078-46078 C02B91/ ....hm/AVSession news.hm I [AddSupportCommand()-avsession_proxy.cpp:717] add support command for 4
08-28 16:21:35.772 46078-46078 C02B91/ ....hm/AVSession news.hm I [AddCallback()-napi_avsession_callback.cpp:282] Add callback 4
08-28 16:21:35.772 46078-46078 C02B91/ ....hm/AVSession news.hm I [Enqueue()-napi_async_work.cpp:81] name=Activate
08-28 16:21:35.773 46078-46078 C02B91/ ....hm/AVSession news.hm I [Enqueue()-napi_async_work.cpp:81] name=SetExtras
08-28 16:21:35.773 46078-46078 C02B91/ ....hm/AVSession news.hm I [Enqueue()-napi_async_work.cpp:81] name=Destroy
08-28 16:21:35.773 46078-46078 C02B91/ ....hm/AVSession news.hm I [Enqueue()-napi_async_work.cpp:81] name=CreateAVSession
08-28 16:21:35.773 46078-47866 C02B91/ ....hm/AVSession news.hm I [Destroy()-avsession_proxy.cpp:108] enter
08-28 16:21:35.774 46078-47858 C02B91/ ....hm/AVSession news.hm E [CreateSession()-avsession_service_proxy.cpp:54] CreateSession failed
08-28 16:21:35.774 46078-46078 A00000/ ...iaSessionUtil news.hm I {"bizType":"MediaSessionUtil","msg":"Media.AVSession-2, Failed to create AVSession, error info: {\"code\":6600101}"}
avSession.createAVSession创建会话对象,一个Ability只能存在一个会话,重复创建会失败,销毁完毕之后才能创建新的session实例。