本发明涉及视频播放管理技术领域,具体说是一种视频播放所有者的管理方法。
背景技术:
在多视频播放页面切换时,或在单例播放页面重入时,容易出现播放混乱问题。例如:一遇到加载就显示tookbackgroundtaskassertion(9)forplaybackstall。再例如:等到endingbackgroundtaskassertion(9)forplaybackstall视频继续播放,但是会发生奇怪的情况,明明设置了repeatmodenone他还继续播放而且反复卡在同一个时间段循环播放。
多视频播放:同时或按顺序播放多个视频,关闭任意一个视频就退出播放器,播放完成自动切换到下一个视频,app进入后台暂停播放,进入前台继续播放,跳转到其他页面则不再播放。
单例播放(单例模式):在程序运行过程,一个类只有一个实例,无论如何程序运行过程中只有一份实例。
针对上述情况导致的播放混乱问题,目前的解决方法是:
需要在不同的viewcontroller的生存周期方法(viewdidload,viewwilldisappear,viewdiddisappear,dealloc)中乱舞。
viewcontroller是ios应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,viewcontroller管理应用中的众多视图。
viewdidload方法,在视图加载后被调用,如果是在代码中创建的视图加载器,他将会在loadview方法后被调用,如果是从nib视图页面输出,他将会在视图设置好后后被调用。
viewwilldisappear方法,当收到视图将去除、被覆盖或隐藏于视窗时的通知会呼叫的方法,
viewdiddisappear方法,当收到视图已去除、被覆盖或隐藏于视窗时的通知会呼叫的方法,
dealloc方法,视图被销毁,此处需要对你在init和viewdidload中创建的对象进行释放。
这种解决方案存在以下问题:严重受限于这些方法的调用时序,如果一旦时序混乱,会出现不可预测的后果。视频播放或不能继续,影响用户体验,给开发工作、维护工作带来不便。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种视频播放所有者的管理方法,对视频所有者进行管理,有效的解决因为时序问题造成的对视频控制失控问题,不再受调用时序的干扰,算法简单,易于处理,稳定性好,有效避免播放混乱的情况出现。
为达到以上目的,本发明采取的技术方案是:
一种视频播放所有者的管理方法,其特征在于:
设定视频所有者协议videoownerprotocol,在协议中设定以下属性:
自动播放属性,用于标识当前播放中的视频是否支持自动播放,
浮动小窗属性,用于标识当前播放中的视频是否支持浮层播放,
设定视频所有者管理器videoownermanager,用于实现以下功能:
加入视频所有者pushowner,将视频所有者压入队列顶端,
删除视频所有者popowner,将视频所有者弹出队列顶端,
清空视频所有者clearowner,清空队列中所有的视频所有者。
在上述技术方案的基础上,所述浮层播放指播放窗口缩小为一浮动小窗。
在上述技术方案的基础上,所述浮动小窗尺寸为默认值,其所在view置于最上层,支持拖动调整位置。
在上述技术方案的基础上,所述队列为管理者堆栈。
在上述技术方案的基础上,加入视频所有者pushowner时,通过obj参数传入当前所有者的信息。
在上述技术方案的基础上,加入视频所有者pushowner时,首先监测当前队列顶端的视频所有者,和要加入的当前所有者obj是否一致,避免重复添加,在不一致时才将当前所有者obj压入队列顶端。
在上述技术方案的基础上,删除视频所有者popowner时,通过obj参数传入当前所有者的信息。
在上述技术方案的基础上,删除视频所有者popowner时,首先监测当前队列顶端的视频所有者,和要弹出的当前所有者obj是否一致,避免重复删除,在一致时才将当前所有者obj弹出队列顶端。
本发明所述的视频播放所有者的管理方法,对视频所有者进行管理,有效的解决因为时序问题造成的对视频控制失控问题,不再受调用时序的干扰,算法简单,易于处理,稳定性好,有效避免播放混乱的情况出现。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的视频播放所有者的管理方法:
设定视频所有者协议videoownerprotocol,在协议中设定以下属性:
自动播放属性,用于标识当前播放中的视频是否支持自动播放,
浮动小窗属性,用于标识当前播放中的视频是否支持浮层播放,其中:
所述浮层播放指播放窗口缩小为一浮动小窗,
所述浮动小窗尺寸为默认值,其所在view置于最上层,支持拖动调整位置,
设定视频所有者管理器videoownermanager,用于实现以下功能:
加入视频所有者pushowner,将视频所有者压入队列顶端,其中:
所述队列为管理者堆栈,
加入视频所有者pushowner时,通过obj参数传入当前所有者的信息,
加入视频所有者pushowner时,首先监测当前队列顶端的视频所有者,和要加入的当前所有者obj是否一致,避免重复添加,在不一致时才将当前所有者obj压入队列顶端,
删除视频所有者popowner,将视频所有者弹出队列顶端,
删除视频所有者popowner时,通过obj参数传入当前所有者的信息,
删除视频所有者popowner时,首先监测当前队列顶端的视频所有者,和要弹出的当前所有者obj是否一致,避免重复删除,在一致时才将当前所有者obj弹出队列顶端,
清空视频所有者clearowner,清空队列中所有的视频所有者。
本发明实现了对视频所有者的管理,视频所有者,是给视频播放功能增添了一个类似用户的概念(视频所有者具有当前视频播放控制的管理权限),每次视频的播放、暂停等,都是由所有者发起、暂停或取消(关闭)。一旦所有者改变,则旧的所有者就丧失了对当前视频的控制权,避免播放混乱的情况出现。
例如:
当进入新播放页,则应该只有新播放页有权利暂停视频,旧的播放页暂停功能即使调用了,也是无效的。有效的解决因为时序问题造成的对视频控制失控问题。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。