一种显示进度的方法、装置、电子设备及介质转让专利

申请号 : CN201811646179.2

文献号 : CN109698974B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张磊

申请人 : 武汉斗鱼网络科技有限公司

摘要 :

本发明公开了一种显示进度的方法、装置、电子设备及介质,包括:弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据;所述弹幕分发器将所述进度弹幕消息分发至预先定义的处理控制器类;所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信。本发明解决了现有的进度更新存在的无法多用户同步的技术问题,实现了多用户同步进度更新。

权利要求 :

1.一种显示进度的方法,其特征在于,包括:

弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据;

所述弹幕分发器将所述进度弹幕消息分发至预先定义的处理控制器类;

所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信。

2.如权利要求1所述的方法,其特征在于,所述处理控制器类的定义方法为:通过Public Class ProgressDataController{}命令定义所述处理控制器类;

其中,ProgressDataController为所述处理控制器类的名称, public表征所述处理控制器类的权限为公有类型,以使所述弹幕分发器能持有所述处理控制器类,并将所述进度弹幕消息发送到所述处理控制器类中。

3.如权利要求1所述的方法,其特征在于,所述弹幕分发器将所述进度弹幕消息分发至预先定义的处理控制器类之后,还包括:所述处理控制器类通过标准的弹幕解析方法将所述进度弹幕消息解析成ProgressBean类型的mProgressBean对象,所述mProgressBean对象中存储有所述进度弹幕消息中的内容信息。

4.如权利要求3所述的方法,其特征在于,所述进度弹幕消息还包括以下任一种或多种:消息类型、进度唯一标识符、历史进度数据和校验位信息;

其中,所述消息类型用于区分进度消息和弹幕消息,所述进度唯一标识符用于描述进度所属的对象,所述历史进度数据为前一次获得的进度数据,所述校验位信息为MD5校验位信息;

所述处理控制器类验证所述进度弹幕消息为合法消息,包括以下一种或多种的组合:根据所述校验位信息,采用MD5校验方法校验所述进度弹幕消息是否为合法消息;

将所述历史进度数据与本地存储的历史进度数据进行比对,根据比对结果验证所述进度弹幕消息是否为合法消息;

验证所述消息类型是否符合要求来验证所述进度弹幕消息是否为合法消息;

验证所述进度唯一标识符是否符合要求来验证所述进度弹幕消息是否为合法消息;

其中,所述校验位信息、所述历史进度数据、所述消息类型和所述进度唯一标识符均通过get命令从所述mProgressBean对象中获取。

5.如权利要求1所述的方法,其特征在于,所述通信协议函数的定义方法为:定义通信协议,所述通信协议包括所述通信协议函数,所述通信协议函数包括更新进度的函数参数;

在所述进度条视图对象所属的页面类中复写所述通信协议函数,以生成复写协议函数,并通过所述复写协议函数来继承所述通信协议,建立继承关系;

将所述通信协议函数传递至所述处理控制器类,使所述处理控制器类持有所述通信协议函数。

6.如权利要求5所述的方法,其特征在于,所述将所述通信协议函数传递至所述处理控制器类,包括:在处理控制器类中定义全局的所述页面类类型的通信协议本地对象;

在所述通信协议中调用register方法传递通信协议函数,所述通信协议函数的入参参数赋值给所述通信协议本地对象,所述通信协议函数与所述通信协议本地对象建立等于关系。

7.如权利要求6所述的方法,其特征在于,所述通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,包括:通过get命令获取所述进度弹幕消息中的当前进度数据;

通过set命令将所述当前进度数据更新致所述通信协议本地对象,以基于所述等于关系更新所述通信协议函数,进而基于所述继承关系更新所述复写协议函数,从而更新与所述复写协议函数同属于所述页面类的所述进度条视图对象的值。

8.一种显示进度的装置,其特征在于,包括:

弹幕分发器,用于弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据;将所述进度弹幕消息分发至预先定义的处理控制器类;

处理控制器,用于所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信;

通信协议模块,用于定义所述通信协议函数。

9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-7任一所述的方法。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7任一所述的方法。

说明书 :

一种显示进度的方法、装置、电子设备及介质

技术领域

[0001] 本发明涉及互联网技术领域,尤其涉及一种显示进度的方法、装置、电子设备及介质。

背景技术

[0002] 随着网络通信技术的进步和宽带网络的提速,网络游戏、网络直播等等各类应用得到了越来越多的发展,越来越多的用户选择在网上通过各类应用或网页界面进行娱乐和交友。
[0003] 当前的应用和网页为了能给用户提供更好的服务,会常常需要进行安全性提升、交互界面改进、新功能添加或显示外观改进等等更新,为了便于用户了解更新进度,就会提供进度条进行显示。另外,在用户开启某个页面、打开某个程序、下载某个资源或切换场景时,为了便于用户了解进程,也会提供进度信息进行显示。
[0004] 然而,现有进度信息往往通过传统消息机制来进行更新的,也就是说将进度信息的消息发送到进度条上,进度条接收到消息后来处理更新操作。这种方式存在很多的弊端问题,例如,本地消息无法在多个用户之间进行进度信息的同步。
[0005] 可见,现有的进度更新存在无法多用户同步的问题。

发明内容

[0006] 本申请实施例通过提供一种显示进度的方法、装置、电子设备及介质,解决了现有的进度更新存在的无法多用户同步的技术问题。
[0007] 第一方面,提供一种显示进度的方法,包括:
[0008] 弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据;
[0009] 所述弹幕分发器将所述进度弹幕消息分发至预先定义的处理控制器类;
[0010] 所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信。
[0011] 可选的,所述处理控制器类的定义方法为:通过Public  Class ProgressDataController{}命令定义所述处理控制器类;其中,ProgressDataController为所述处理控制器类的名称,public表征所述处理控制器类的权限为公有类型,以使所述弹幕分发器能持有所述处理控制器类,并将所述进度弹幕消息发送到所述处理控制器类中。
[0012] 可选的,所述弹幕分发器将所述进度弹幕消息分发至预先定义的处理控制器类之后,还包括:所述数据控制器类通过标准的弹幕解析方法将所述进度弹幕消息解析成ProgressBean类型的mProgressBean对象,所述mProgressBean对象中存储有所述进度弹幕消息中的内容信息。
[0013] 可选的,所述进度弹幕消息还包括以下任一种或多种:消息类型、进度唯一标识符、历史进度数据和校验位信息;其中,所述消息类型用于区分进度消息和弹幕消息,所述进度唯一标识符用于描述进度所属的对象,所述历史进度数据为前一次获得的进度数据,所述校验位信息为MD5校验位信息;所述处理控制器类验证所述进度弹幕消息为合法消息,包括以下一种或多种的组合:根据所述校验位信息,采用MD5校验方法校验所述进度弹幕消息是否为合法消息;将所述历史进度数据与本地存储的历史进度数据进行比对,根据比对结果验证所述进度弹幕消息是否为合法消息;验证所述消息类型是否符合要求来验证所述进度弹幕消息是否为合法消息;验证所述进度唯一标识符是否符合要求来验证所述进度弹幕消息是否为合法消息;其中,所述校验位信息、所述历史进度数据、所述消息类型和所述进度唯一标识符均通过get命令从所述mProgressBean对象中获取。
[0014] 可选的,所述通信协议函数的定义方法为:定义通信协议,所述通信协议包括所述通信协议函数,所述通信协议函数包括更新进度的函数参数;在所述进度条视图对象所属的页面类中复写所述通信协议函数,以生成复写协议函数,并通过所述复写协议函数来继承所述通信协议,建立继承关系;将所述通信协议函数传递至所述处理控制器类,使所述处理控制器类持有所述通信协议函数。
[0015] 可选的,所述将所述通信协议函数传递至所述处理控制器类,包括:在处理控制器类中定义全局的所述页面类类型的通信协议本地对象;在所述通信协议中调用register方法传递通信协议函数,所述通信协议函数的入参参数赋值给所述通信协议本地对象,所述通信协议函数与所述通信协议本地对象建立等于关系。
[0016] 可选的,所述通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,包括:通过get命令获取所述进度弹幕消息中的当前进度数据;通过set命令将所述当前进度数据更新致所述通信协议本地对象,以基于所述等于关系更新所述通信协议函数,进而基于所述继承关系更新所述复写协议函数,从而更新与所述复写协议函数同属于所述页面类的所述进度条视图对象的值。
[0017] 第二方面,提供一种显示进度的装置,包括:
[0018] 弹幕分发器,用于弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据;将所述进度弹幕消息分发至预先定义的处理控制器类;
[0019] 处理控制器,用于所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信;
[0020] 通信协议模块,用于定义所述通信协议函数。
[0021] 第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现第一方面任一所述的方法。
[0022] 第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现第一方面任一所述的方法。
[0023] 本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0024] 本申请实施例提供的方法、装置、电子设备及介质,创造性的采用弹幕来更新进度,设置进度通过弹幕消息协议生成的进度弹幕消息来处理,并通过弹幕分发器来分发至处理控制器类,由于弹幕分发器的多用户同步分发功能,实现将进度快速的同步至多用户。并通过设置通信协议函数来传递进度条视图对象与处理控制器类之间的进度数据,从而实现处理控制器类验证进度弹幕消息为合法消息后,能根据进度弹幕消息中的当前进度数据更新进度条视图对象的值,从技术上实现了通过弹幕分发器进行多用户同步的进度更新。
也比避免了处理控制器类与进度条视图对象之间直接耦合导致的后续维护和扩展的困难,减少后续维护成本。

附图说明

[0025] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026] 图1为本申请实施例一中显示进度的方法的流程图;
[0027] 图2为本申请实施例二中装置的结构示意图;
[0028] 图3为本申请实施例中电子设备的结构示意图;
[0029] 图4为本申请实施例中计算机可读存储介质400的结构示意图。

具体实施方式

[0030] 本申请实施例通过提供一种显示进度的方法、装置、电子设备及介质,解决了现有的进度更新存在的无法多用户同步的技术问题。创造性的采用弹幕来更新进度,设置进度通过弹幕消息协议生成的进度弹幕消息来处理,并通过弹幕分发器来分发至处理控制器类,由于弹幕分发器的多用户同步分发功能,实现将进度快速的同步至多用户。并通过设置通信协议函数来传递进度条视图对象与处理控制器类之间的进度数据,从而实现处理控制器类验证进度弹幕消息为合法消息后,能根据进度弹幕消息中的当前进度数据更新进度条视图对象的值,从技术上实现了通过弹幕分发器进行多用户同步的进度更新。也比避免了处理控制器类与进度条视图对象之间直接耦合导致的后续维护和扩展的困难,减少后续维护成本。
[0031] 为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
[0032] 实施例一
[0033] 如图1所示,本实施例提供了一种显示进度的方法,包括:
[0034] 步骤S101,弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据;
[0035] 步骤S102,所述弹幕分发器将所述进度弹幕消息分发至预先定义的处理控制器类;
[0036] 步骤S103,所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信。
[0037] 在本申请实施例中,所述方法可以应用于智能手机、笔记本、台式电脑和平板电脑等客户端,也可以应用于服务器或云端,在此不作限制。对于进度数据从本地获取的情况,该方法的所有步骤均在客户端本地实施,对于进度数据从服务器获取的情况,可以由客户端从服务器获取进度数据后,在本地实施该方法的所有步骤,也可以在服务器端实施步骤S101~S102,分发进度弹幕信息至一个或多个客户端后,在各个客户端执行步骤S103,在此不作限制。
[0038] 本实施例中的进度数据,可以是安全性提升、交互界面改进、新功能添加或显示外观改进等等更新的进度数据,也可以是用户开启某个页面、打开某个程序、下载某个资源或切换场景的进度数据,在此不作限制,也不再一一列举。
[0039] 下面,结合图1来详细介绍本申请实施例提供的显示进度方法的具体实施步骤:
[0040] 步骤S101,弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据。该弹幕分发器是通过弹幕分发器的构造函数来产生的弹幕分发器对象。
[0041] 本实施例是采用弹幕分发器来进行进度数据的分发的,故需要先设计出进度条更新的进度数据与弹幕分发器之间的协议关系,即需要预设弹幕消息协议,以便于后续计算出的当前进度数据均能基于弹幕消息协议生成进度弹幕消息。该弹幕消息协议为标准的弹幕消息的协议格式。
[0042] 为了便于从进度弹幕消息中获取进度的相关信息和保证消息的准确性,可以设置进度弹幕消息还包括以下任一种或多种:
[0043] 消息类型、进度唯一标识符、历史进度数据和校验位信息;其中,所述消息类型用于区分进度消息和弹幕消息,所述进度唯一标识符用于描述进度所属的对象,所述历史进度数据为前一次获得的进度数据,所述校验位信息为MD5校验位信息。下面分别进行说明:
[0044] 当前进度数据:即当前计算出的进度数据值,可以用progress标识。progress@=30表示当前进度为30%。
[0045] 消息类型:当将进度数据采用弹幕消息协议的进度弹幕消息携带时,为了避免其与普通的弹幕消息混淆,设置消息类型来区分进度消息和弹幕消息。举例来讲,可以为进度弹幕消息设计加入唯一的type字段信息,该type用于唯一表示该进度弹幕消息是一个进度更新的消息。具体可以设计type=progress,后续根据type的字段来区分消息的类型。
[0046] 唯一标识符:为了描述进度所属的对象,便于服务器和本地端识别该进度是具体描述哪个事件、哪个模块的进度,故可以设置进度弹幕消息包括唯一标识符。举例来讲,对直播平台,如果该进度是展示在某一个直播房间内的某项进度,则该唯一标识符可以采用直播房间的信息进行设计,例如设计为roomId(房间编号)。
[0047] 历史进度数据:为了保证进度的准确性在设计进度弹幕消息的时候可以设置计算入历史进度数据来校验上一次的进度数据,例如可以设计lastProgress的字段信息用于标记上一次的进度数据。
[0048] 校验位信息:从安全性考虑,为了防止进度弹幕消息在传输过程中被分发篡改,可以在进度弹幕消息中添加了一条md5的校验位信息,这样可以保证进度弹幕消息的完整性。
[0049] 假设加入上述的所有信息,给出设置最终的按照弹幕消息协议生成的进度弹幕消息,如下所示:
[0050] {type@=progress/roomId@=10202/progress@=30/lastProgress@=25/md5=22d3e2d/}
[0051] 其中,各信息间以“/”来进行分割;通过@=符号来进行定义,@=符号左边是协议键信息,右边是协议值信息。上述给出的仅是一个消息的示例,不是限制消息的格式及内容。
[0052] 步骤S102,所述弹幕分发器将所述进度弹幕消息分发至预先定义的处理控制器类。
[0053] 弹幕分发器可以为服务器上的软件模块,也可以为客户端上的软件模块,还可以为独立的弹幕分发服务器,在此不作限制。
[0054] 当弹幕分发器获取到进度弹幕消息后,会根据唯一标识符和信息类型将进度弹幕消息分发至相关的各个客户端,具体是分发至各个客户端中的处理控制器类中。
[0055] 该处理控制器类是预先定义的,具体定义方法为通过Public  Class ProgressDataController{}命令定义所述处理控制器类;其中,ProgressDataController为所述处理控制器类的名称,public表征所述处理控制器类的权限为公有类型,以使所述弹幕分发器能持有所述处理控制器类,并将所述进度弹幕消息发送到所述处理控制器类中。
[0056] 步骤S103,所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信。
[0057] 当处理控制器类接收到弹幕分发器分发的进度弹幕消息之后,首先通过标准的弹幕解析方法将所述进度弹幕消息解析成ProgressBean类型的mProgressBean对象,所述mProgressBean对象中存储有所述进度弹幕消息中的内容字段信息。mProgressBean对象中存储的进度弹幕消息的每一个内容字段信息都有一个对应的getXXX来从mProgressBean对象中调用获取,也有一个对应的setXXX方法来在mProgressBean对象中设置写入。从而便于判断所述进度弹幕消息是否为合法消息,也便于数据的提取和写入。
[0058] 在本申请实施例中,所述处理控制器类验证所述进度弹幕消息为合法消息,可以包括以下一种或多种的组合。即可以设置只有以下验证均为合法时,才认为进度弹幕消息为合法消息,也可以设置以下验证中的某几条或一条验证为合法时,认为进度弹幕消息为合法消息:
[0059] 根据所述校验位信息,采用MD5校验方法校验所述进度弹幕消息是否为合法消息;
[0060] 将所述历史进度数据与本地存储的历史进度数据进行比对,根据比对结果验证所述进度弹幕消息是否为合法消息;
[0061] 通过验证所述消息类型是否符合要求来验证所述进度弹幕消息是否为合法消息;
[0062] 通过验证所述进度唯一标识符是否符合要求来验证所述进度弹幕消息是否为合法消息;
[0063] 其中,所述校验位信息、所述历史进度数据、所述消息类型和所述进度唯一标识符均通过get命令从所述mProgressBean对象中获取。
[0064] 举例来讲,以设置只有上述验证均为合法时,才认为进度弹幕消息为合法消息为例:
[0065] 首先,通过调用mProgressBean对象中的mProgressBean.getMd5()方法来获取MD5的校验信息。然后通过标准的MD5校验方法对弹幕信息进行校验,如果发现校验的结果和获取的MD5的值是相同的,认为该消息合法,才能进行后续的处理操作,否则认为该消息非法,直接抛弃掉消息,不做任何处理操作。
[0066] 然后,如果MD5校验通过,则调用mProgressBean.getLastProgress()方法来获取历史进度数据,并将获取的值和本地存储的历史进度数据localLastProgress的值进行对比,如果发现相同则认为这条进度信息是有效的。否则,还需要判断localLastProgress==0是否成立,如果等于0说明是第一次发送的弹幕进度消息,此时也认为该弹幕消息是有效的,否则就是一条无效的消息。如果是无效消息需要通过返回结束整个处理流程。需要说明的是,localLastProgress字段是预先定义在处理控制器类,即ProgressDataController类中的,具体的定义方法是设置private int localLastProgress=0,该字段信息主要用于存储上一次的进度信息,其初始值为0。
[0067] 如果历史进度数据验证通过,则更新localLastProgress的值信息,具体的更新方法是localLastProgress=mProgressBean.getProgress()方法来将当前的最新消息赋值为localLastProgress,这样就可以方便下一次的对比localLastProgress的时候使用。
[0068] 接下来,在通过字符串匹配的方式来校验消息类型type和唯一标识符roomId是否合法,具体是通过调用TextUtils.equals(roomId,mProgressBean.getRoomId())方法来校验房间号码信息,同理通过类似的方式来校验消息类型的信息。如果有任意一个不合法就直接返回结束整个处理流程,否则就继续进行后续的更新步骤。
[0069] 当然,在具体实施过程中,处理控制器类验证进度弹幕消息是否为合法消息的方法不限于上述列举的例子,可以根据需要设置,在此不作限制。
[0070] 所述处理控制器类验证所述进度弹幕消息为合法消息后,再根据进度弹幕消息中的当前进度数据更新进度条视图对象的值。进度条视图对象的值决定了显示单元上显示的进度图像的显示状态。该进度图像可以是条状进度图像,可以是数字型进度图像,也可以是圆环型进度图像等,在此不作限制。例如,进度条视图对象的值为35,则显示单元上可以显示35%的进度值,或有35%的区域为深色的长条,或有35%的面积为深色的圆环。
[0071] 在本实施例中,为了使得处理控制器类能够更新进度条视图对象,并于更新进度条视图对象不直接耦合,能相对独立更新和维护,可以定义通信协议函数来作为处理控制器类与进度条视图对象的通信关联桥梁。具体做法是定义通信协议,所述通信协议包括所述通信协议函数,所述通信协议函数包括更新进度的函数参数;在所述进度条视图对象所属的页面类中复写所述通信协议函数,以生成复写协议函数,并通过所述复写协议函数来继承所述通信协议,建立继承关系;将所述通信协议函数传递至所述处理控制器类,使所述处理控制器类持有所述通信协议函数或其引用关系。
[0072] 举例来讲,通信协议名称可以定义为ControllerToBar,并且ControllerToBar协议中包含了通信协议函数onProgressUpdate,该通信协议函数为用于在处理控制器类(ProgressDataController类)与进度条视图对象(ProgressBar类)之间进行通信的协议函数。该通信协议函数中的函数参数progress参数用于进度信息的更新。当然,本实施例中的函数/类/对象的名称只用于举例,不作限制。
[0073] 定义好通信协议后,设置所述进度条视图对象所属的页面类继承所述通信协议。具体可以在所述页面类中复写所述通信协议函数,以生成复写协议函数,并通过所述复写协议函数来继承所述通信协议,建立继承关系。举例来讲,可以通过implements ControllerToBar命令来设置页面类继承该通信协议,即通过public  void onProgressUpdate(int progress)方法复写通信协议中的通信协议函数,生成复写协议函数,后续进度条视图对象会在生成复写协议函数内获取新的进度数据进行进度更新。
[0074] 而复写协议函数继承所述通信协议,故在通信协议函数获得更新后,会将更新数值继承给所述复写协议函数。故本申请还建立了通信协议与处理控制器类之间的耦合关系,来使处理控制器持有将所述通信协议函数传递至所述处理控制器类,使所述处理控制器类持有所述通信协议函数或其引用关系,从而与进度条视图对象间接的耦合。
[0075] 在本申请实施例中,将所述通信协议函数传递至所述处理控制器类的方法为:在处理控制器类中定义全局的所述页面类的类型的通信协议本地对象,并在所述通信协议中调用register方法传递通信协议函数,所述通信协议函数的入参参数赋值给所述通信协议本地对象,所述通信协议函数与所述通信协议本地对象建立等于关系。
[0076] 举例来讲,在通信协议ControllerToBar这侧:通过调用ProgressDataController类中的register((ControllerToBar)this)来将通信协议函数传递给ProgressDataController类。在调用register方法的时候传递this对象。this对象代表的是进度条视图对象,由于进度条视图对象继承了通信协议,因此需要将this对象的类型进行强制转换,转换成通信协议类型,并传递到register函数中。其中,register函数是属于处理控制器类的函数,其定义命令为:public void register(ControllerToBar iControllerToBar){}。该命令是public公有类型,返回值是void类型,函数名称是register,包括入参参数iControllerToBar,入参参数类型是自定义的通信协议(ControllerToBar)类型的参数,其值与通信协议函数的值相等。
[0077] 在处理控制器类这侧,需要在处理控制器内部定义全局的通信协议ControllerToBar类型的变量通信协议本地对象(localControllerToBar),在register函数的实现过程中首先通过调用iControllerToBar==null的方式来对入参参数进行判空处理,如果为空就结束处理流程,否则就通过localControllerToBar=iControllerToBar方法来将入参参数信息赋值给全局的通信协议本地对象localControllerToBar中,这样通信协议本地对象localControllerToBar其实就是指向了通信协议函数的指针。
[0078] 在完成上述对ProgressDataController类和通信协议两侧的设置后,如果处理控制器类通过步骤S102接收到所述弹幕分发器分发的所述进度弹幕消息,则可以通过get命令获取所述进度弹幕消息中的当前进度数据(targetProgress);再通过set命令,例如通过调用localControllerToBar.setonProgressUpdate(targetProgress)命令将所述当前进度数据更新致所述通信协议本地对象localControllerToBar,以基于所述等于关系更新所述通信协议函数,进而基于所述继承关系更新所述复写协议函数,从而更新与所述复写协议函数同属于所述页面类的所述进度条视图对象的值,这样就完成了进度条视图的更新。
[0079] 具体来讲,通过创造性的采用弹幕来更新进度,设置进度通过弹幕消息协议生成的进度弹幕消息来处理,并通过弹幕分发器来分发至处理控制器类,由于弹幕分发器的多用户同步分发功能,实现将进度快速的同步至多用户。并通过设置通信协议函数来传递进度条视图对象与处理控制器类之间的进度数据,从而实现处理控制器类验证进度弹幕消息为合法消息后,能根据进度弹幕消息中的当前进度数据更新进度条视图对象的值,从技术上实现了通过弹幕分发器进行多用户同步的进度更新。也避免了处理控制器类与进度条视图对象之间直接耦合导致的后续维护和扩展的困难,两者之间通过协议的方式来进行耦合,这样就比直接耦合关系的程度会降低,逻辑功能是相互独立的,能够极大的提高代码的可维护性和可扩展性等,减少后续维护成本。
[0080] 本申请还提供另一种实施方式,所述处理控制器类验证所述进度弹幕消息为合法消息后,为了使得处理控制器类能够更新进度条视图对象,可以先让处理控制器类与进度条视图对象互相持有,具体做法是将进度条视图对象预先传递至处理控制器类中,以使所述处理控制器类持有所述进度条视图对象的引用关系。通过互相持有的方式,能减少设置通信协议函数的工作量,减少进度数据传输方案的实现难度。
[0081] 具体来讲,先在两个类中实例化出对方类的对象,需要在处理控制器类中定义全局的进度条视图本地对象;并在进度条视图对象所属的页面类中调用所述处理控制器类的构造函数来实例化所述处理控制器类的进度数据对象,调用进度数据对象中的set()方法将所述进度条视图对象传递到所述处理控制器类,并设置所述进度条视图本地对象等于所述进度条视图对象的等于关系。
[0082] 举例来讲,在处理控制器类,即ProgressDataController类这侧:先在其中定义全局的ProgressBar类的进度条视图本地对象,即localProgressBarView对象。以方便ProgressDataController类中的其他函数通过对localProgressBarView对象进行操作和处理。
[0083] 在进度条视图对象,即mProgressBar对象这侧:在进度条视图对象所在的页面类中通过调用ProgressDataController类的构造函数来实例化ProgressDataController类型的进度数据对象,即mProgressDataController对象。然后调用mProgressDataController对象中的setProgressBar(mProgressBar)方法将进度条视图对象,即mProgressBar对象传递到ProgressDataController类中。
[0084] 通过对ProgressDataController类和页面类两侧的处理,实现了处理控制器类与进度条视图对象互相持有。再并设置所述进度条视图本地对象等于所述进度条视图对象的等于关系,从而便于后续ProgressDataController类访问更新进度条视图对象的值。具体设置方法在ProgressDataController类中采用setProgressBar函数,通过调用localProgressBarView=mProgressBar的方法将mProgressBar对象的值转化成全局访问权限的变量localProgressBarView对象的值,从而后续能通过更新localProgressBarView对象,实现更新mProgressBar对象。
[0085] 在完成上述对ProgressDataController类和页面类两侧的设置后,如果处理控制器类通过步骤S102接收到所述弹幕分发器分发的所述进度弹幕消息,则可以通过get命令获取所述进度弹幕消息中的当前进度数据(targetProgress),再通过set命令,例如通过调用localProgressBarView.setProgress(targetProgress)命令将所述当前进度数据更新致所述进度条视图本地(localProgressBarView)对象,从而基于设置的localProgressBarView=mProgressBar的关系,来达到更新所述进度条视图(mProgressBar)对象的目的。从而将当前进度数据更新到进度条视图对象上,这样就完成了进度条视图的更新。
[0086] 基于同一发明构思,本申请提供了实施例一对应的装置实施例,详见实施例二。
[0087] 实施例二
[0088] 本实施例提供一种显示进度的装置,如图2所示,包括:
[0089] 弹幕分发器201,用于弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据;将所述进度弹幕消息分发至预先定义的处理控制器类;
[0090] 处理控制器202,用于所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信;
[0091] 通信协议模块203,用于定义所述通信协议函数。
[0092] 由于本实施例所介绍的装置为实施本申请实施例一中方法所采用的装置,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的装置的具体实施方式以及其各种变化形式,所以在此对于该装置如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
[0093] 基于同一发明构思,本申请提供了实施例一对应的设备实施例,详见实施例三。
[0094] 实施例三
[0095] 本实施例提供一种电子设备,如图3所示,包括存储器310、处理器320及存储在存储器310上并可在处理器320上运行的计算机程序311,处理器320执行计算机程序311时实现:
[0096] 弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据;
[0097] 所述弹幕分发器将所述进度弹幕消息分发至预先定义的处理控制器类;
[0098] 所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信。
[0099] 由于本实施例所介绍的电子设备为实施本申请实施例一中方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
[0100] 基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例四。
[0101] 实施例四
[0102] 本实施例提供一种计算机可读存储介质400,如图4所示,其上存储有计算机程序411,该计算机程序411被处理器执行时实现:
[0103] 弹幕分发器获取按预设的弹幕消息协议生成的进度弹幕消息,所述进度弹幕消息包括当前进度数据;
[0104] 所述弹幕分发器将所述进度弹幕消息分发至预先定义的处理控制器类;
[0105] 所述处理控制器类验证所述进度弹幕消息为合法消息后,通过预先定义的通信协议函数传输所述进度弹幕消息至更新进度条视图对象,以根据所述当前进度数据更新所述进度条视图对象的值,从而更新显示单元上当前显示的进度图像,其中,所述进度条视图对象与所述处理控制器类通过所述通信协议函数通信。
[0106] 在具体实施过程中,该计算机程序411被处理器执行时,可以实现实施例一中任一实施方式。
[0107] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0108] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0109] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0110] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0111] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0112] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。