我有一个 TVML/TVJS 应用程序,它显示一个包含许多可播放项目的文档。每个项目都是一个带有事件处理程序的锁定元素,用于启动内置媒体播放器,非常类似于示例项目:
https://developer.apple.com/documentation/tvmljs/playing_media_in_a_client-server_app
在示例代码中,事件处理程序Player
每次触发时都会从头开始创建一个新对象,但我希望播放器可以恢复:当用户退出播放器(例如使用菜单按钮)并通过再次选择项目返回时,我想从中断的地方恢复播放器。
以前,我会通过Player
在加载文档时已经为每个项目创建对象来做到这一点(包括Playlist
and MediaItem
),然后在事件处理程序中执行player.select()
or player.play()
。那会很好用。
从 tvOS 14 开始,Player
在文档加载时创建所有这些对象似乎会使应用程序过载(也许它已经开始从网络获取所有这些项目)。所以我不再Player
事先创建对象,但如果我已经有一个Player
项目,我会检查事件处理程序,并在第一次创建它时创建它,否则我会重用该Player
对象。
但即使我检查了我是否重用了现有Player
对象,调用play()
或present()
导致播放从头开始。那么获得可恢复播放器的合适方法是什么?