一种切换导航栏的方法及装置与流程

文档序号:11229984阅读:1148来源:国知局
一种切换导航栏的方法及装置与流程

本发明属于数据处理技术领域,尤其涉及一种切换导航栏的方法及装置。



背景技术:

在android电视应用中,很多时候app都会有导航栏,有时可能还是两三级导航栏联动效果,在导航栏切换过程中,需要重新请求该导航栏目下的内容,才可以实现切换。

一般来说,android电视/盒子都是利用遥控器控制切换,在切换时,如果一直按着遥控器不动,就会控制焦点不停的切换,导航栏就会频繁的刷新请求数据,若有多级导航栏联动,刷新请求数据的操作将会成几何方式增长,这样就导致用户的操作效率低,体验度不高。



技术实现要素:

针对现有技术存在的问题,本发明实施例提供了一种切换导航栏的方法及装置,用于解决现有技术中在快速切换android电视或android盒子上的导航栏时,导航栏就会频繁的刷新请求数据导致用户操作效率降低的技术问题。

本发明提供一种切换导航栏的方法,所述方法包括:

接收遥控器发送的当前按键事件消息,并按照预设的延迟时间对所述当前按键事件消息进行延迟;

接收与所述当前按键事件消息对应的下次按键事件消息,判断所述下次按键事件消息与所述当前按键事件消息之间的时间间隔是否大于所述预设的延迟时间,若所述时间间隔大于所述预设的延迟时间,则根据所述当前按键事件消息对所述导航栏进行切换。

上述方案中,若所述时间间隔不大于所述预设的延迟时间,还包括:

删除所述当前按键事件消息,根据所述下次按键事件消息对所述导航栏进行切换。

上述方案中,所述根据所述当前按键事件消息对所述导航栏进行切换之前,还包括:

判断所述当前按键事件消息的第一输入方向与所述下次按键事件消息的第二输入方向是否一致,若一致,则根据所述当前按键事件消息对所述导航栏进行切换。

上述方案中,所述若所述时间间隔大于所述预设的延迟时间,则根据所述当前按键事件消息对所述导航栏进行切换,包括:

标记待处理消息的名称;

判断所述当前按键事件消息的名称与所述待处理消息的名称是否一致,若一致,调用onitemselectlistener.onitemposselect函数将所述当前按键事件消息分发至主线程的处理页面中,利用所述主线程对所述当前待处理消息进行处理。

上述方案中,所述删除所述当前按键事件消息,根据所述下次按键事件消息对所述导航栏进行切换,包括:

利用handler删除所述主线程消息队列中的当前按键事件消息;

判断所述下次按键事件消息的名称与所述待处理消息的名称是否一致,若一致,利用handler.obtainmessage(0)函数获取所述下次按键事件消息;

利用handler将所述下次按键事件消息发送至主线程处理页面中;

利用所述主线程对所述下次按键事件消息进行处理。

本发明还提供一种切换导航栏的装置,所述装置包括:

延迟单元,用于接收遥控器发送的当前按键事件消息,并按照预设的延迟时间对所述当前按键事件消息进行延迟;

判断单元,用于接收与所述当前按键事件消息对应的下次按键事件消息,判断所述下次按键事件消息与所述当前按键事件消息之间的时间间隔是否大于所述预设的延迟时间,若所述时间间隔大于所述预设的延迟时间,则根据所述当前按键事件消息对所述导航栏进行切换。

上述方案中,所述装置还包括:判断单元还用于:

若所述时间间隔不大于所述预设的延迟时间,删除所述当前按键事件消息,根据所述下次按键事件消息对所述导航栏进行切换。

上述方案中,所述判断单元还用于:

根据所述当前按键事件消息对所述导航栏进行切换之前,判断所述当前按键事件消息的第一输入方向与所述下次按键事件消息的第二输入方向是否一致,若一致,则根据所述当前按键事件消息对所述导航栏进行切换。

上述方案中,所述判断单元具体用于:

标记待处理消息的名称;

判断所述当前按键事件消息的名称与所述待处理消息的名称是否一致,若一致,调用onitemselectlistener.onitemposselect函数将所述当前按键事件消息分发至主线程的处理页面中,利用所述主线程对所述当前待处理消息进行处理。

上述方案中,所述判断单元具体还用于:

利用handler删除所述主线程消息队列中的当前按键事件消息;

判断所述下次按键事件消息的名称与所述待处理消息的名称是否一致,若一致,利用handler.obtainmessage(0)函数获取所述下次按键事件消息;

利用handler将所述下次按键事件消息发送至主线程的处理页面中;

利用所述主线程对所述下次按键事件消息进行处理。

本发明提供了一种切换导航栏的方法及装置,所述方法包括:接收遥控器发送的当前按键事件消息,并按照预设的延迟时间对所述当前按键事件消息进行延迟;接收当前与按键事件消息对应的下次按键事件消息,判断所述下次按键事件消息与所述当前按键事件消息之间的时间间隔是否大于所述预设的延迟时间,若所述时间间隔大于所述预设的延迟时间,则根据所述当前按键事件消息对所述导航栏进行切换;如此,接收到当前按键事件消息后,会按照预设的延迟时间将当前按键事件消息进行延迟,当用户继续按下遥控器切换导航栏目时,接收到下次按键事件消息,只有两次事件消息的时间间隔大于预设的延迟时间后,才会将当前按键事件消息分发至处理页面进行处理,从而能根据所述当前按键事件消息对所述导航栏进行切换;这样利用消息延迟机制来优化数据请求,降低了数据请求的刷新次数,进而提高了用户的操作效率。

附图说明

图1为本发明实施例一提供的切换导航栏方法流程示意图;

图2为本发明实施例二提供的切换导航栏装置结构示意图。

具体实施方式

为了在切换导航栏时可以提高用户的操作效率,本发明提供了一种切换导航栏的方法及装置,所述方法包括:接收遥控器发送的当前按键事件消息,并按照预设的延迟时间对所述当前按键事件消息进行延迟;接收与当前按键事件消息对应的下次按键事件消息,判断所述下次按键事件消息与所述当前按键事件消息之间的时间间隔是否大于所述预设的延迟时间,若所述时间间隔大于所述预设的延迟时间,则根据所述当前按键事件消息对所述导航栏进行切换。

下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。

实施例一

本实施例提供一种切换导航栏的方法,如图1所示,所述方法包括:

s101,接收遥控器发送的当前按键事件消息,并按照预设的延迟时间对所述当前按键事件消息进行延迟。

本步骤中,当用户需通过切换安卓tv或安卓盒子的导航栏来观看不同的电视节目时,一般是利用遥控器输入按键事件消息来切换导航栏,那么服务器就会接收遥控器发送的当前按键事件消息,并对当前按键事件消息进行监听来获取遥控器的第一输入方向。所述按键事件一般是指遥控器的onkey事件。

具体地,对当前按键事件消息进行监听来获取遥控器的输入方向包括:获取当前按键事件消息的第一keyevent事件消息,利用所述第一keyevent事件消息的第一键码值来确定当前按键事件消息的第一输入方向。

这里,为了避免用户在同样的输入方向进行频繁操作(比如第一次的输入方向为下,第二次输入方向还为下),导致导航栏切换的数据请求被频繁刷新,所以在接收到当前按键事件消息后,将按照预设的延迟时间对所述当前按键事件消息进行延迟。一般来说,预设的延迟时间可以包括300~400ms,具体的延迟时间可以根据服务器的性能进行确定,本实施例中延迟时间为300ms。

s102,接收当前按键事件消息的下次按键事件消息,判断所述下次按键事件消息与所述当前按键事件消息之间的时间间隔是否大于所述预设的延迟时间,若所述时间间隔大于所述预设的延迟时间,则根据所述当前按键事件消息对所述导航栏进行切换。

本步骤中,当用户利用遥控器输入当前按键事件消息的下次按键事件消息后,判断所述下次按键事件消息与所述当前按键事件消息之间的时间间隔是否大于所述预设的延迟时间,若所述时间间隔大于所述预设的延迟时间,说明当前按键事件消息是用户的需求,则利用回调函数将当前按键事件消息分发至处理页面,根据所述当前按键事件消息对所述导航栏进行切换。

具体地,在利用回调函数将当前按键事件消息分发至处理页面,根据所述当前按键事件消息对所述导航栏进行切换时,首先定义所述回调函数的接口onitemselectlistener,并在接口中定义回调函数onitemposselect。

然后标记待处理消息的名称,比如待处理消息为message.what=0的消息。

在定义好回调函数的接口及回调函数后,定义消息处理函数handler,然后判断所述当前按键事件消息的名称与所述待处理消息的名称是否一致,若一致,消息队列messagequeue会把前按键事件消息分发给handler,所述handler就会处理消息调用函数handlemessage,即通过调用onitemselectlistener.onitemposselect函数将所述当前按键事件消息分发至主线程的处理页面中,利用所述主线程对所述当前待处理消息进行处理,处理完毕后,即能实现导航栏的切换。

这里,若所述时间间隔不大于所述预设的延迟时间,说明消息队列messagequeue还未将当前按键事件消息分发至主线程的处理页面中,此时将删除所述当前按键事件,根据所述下次按键事件消息对所述导航栏进行切换。

所述删除所述当前按键事件,根据所述下次按键事件消息对所述导航栏进行切换,具体包括:

利用handler删除所述主线程消息队列中的当前按键事件消息;判断所述下次按键事件消息的名称与所述待处理消息的名称是否一致,若一致,利用handler.obtainmessage(0)函数获取所述下次按键事件消息;利用handler将所述下次按键事件消息发送至主线程处理页面中;利用所述主线程对所述下次按键事件消息进行处理,处理完毕后,即能实现导航栏的切换。

当然,在获取到下次按键事件消息后,也是需要按照预设的延迟时间利用函数handler.sendmessagedelayed(message,300)将下次待处理消息进行延迟,如此不断地进行循环处理。这样,当用户按下遥控器切换导航栏目时,通过handler延迟300ms发送事件消息message,也就是说handler把消息message发送到了消息队列messagequeue,messagequeue会阻塞300ms才分发消息出去,这样用户在快速输入相同方向的两次按键时,避免了频繁请求数据,优化了数据请求。实际应用中,比如,预设的延迟时间为200ms,如果用户每隔500ms按一次键的话,当用户按下两次键时,本实施例提供的方法中,只向服务器发送一次数据请求;但是按照现有的方法来实施的话,每一次按键都需要向服务器发送数据请求,这样就增加了服务器的处理频率,降低了服务器的处理效率,导致用户的操作效率低。

这里,因本实施例提供的方法是基于遥控案器发送的两次按键事件消息是输入同方向来说的,所以在根据所述当前按键事件消息对所述导航栏进行切换之前,还包括:判断所述当前按键事件消息的第一输入方向与所述下次按键事件消息的第二输入方向是否一致,若一致,则根据所述当前按键事件消息对所述导航栏进行切换。

同样地,判断下次按键事件消息的第二输入方向与判断当前按键事件消息的第一输入方向的方法相同,具体地,获取下次按键事件消息的第二keyevent事件消息,利用所述第二keyevent事件消息的第二键码值来确定下次按键事件消息的第二输入方向。

实施例二

相应于实施例一,本实施例提供一种切换导航栏的装置,如图2所示,所述装置包括:延迟单元21及判断单元22;其中,

当用户需通过切换安卓tv或安卓盒子的导航栏来观看不同的电视节目时,一般是利用遥控器输入按键事件消息来切换导航栏,那么延迟单元21就会接收遥控器发送的当前按键事件消息,并对当前按键事件消息进行监听来获取遥控器的第一输入方向。所述按键事件一般是指遥控器的onkey事件。

具体地,延迟单元21对当前按键事件消息进行监听来获取遥控器的输入方向包括:获取当前按键事件消息的第一keyevent事件消息,利用所述第一keyevent事件消息的第一键码值来确定当前按键事件消息的第一输入方向。

这里,为了避免用户在同样的输入方向进行频繁操作(比如第一次的输入方向为下,第二次输入方向还为下),导致导航栏切换的数据请求被频繁刷新,所以延迟单元21在接收到当前按键事件消息后,将按照预设的延迟时间对所述当前按键事件消息进行延迟。一般来说,预设的延迟时间可以包括300~400ms,具体的延迟时间可以根据服务器的性能进行确定,本实施例中延迟时间为300ms。

当用户利用遥控器输入当前按键事件消息的下次按键事件消息后,所述判断单元22用于判断所述下次按键事件消息与所述当前按键事件消息之间的时间间隔是否大于所述预设的延迟时间,若所述时间间隔大于所述预设的延迟时间,说明当前按键事件消息是用户的需求,则利用回调函数将当前按键事件消息分发至处理页面,根据所述当前按键事件消息对所述导航栏进行切换。

具体地,判断单元22在利用回调函数将当前按键事件消息分发至处理页面,根据所述当前按键事件消息对所述导航栏进行切换时,首先定义所述回调函数的接口onitemselectlistener,并在接口中定义回调函数onitemposselect。

然后标记待处理消息的名称,比如待处理消息为message.what=0的消息。

在定义好回调函数的接口及回调函数后,定义消息处理函数handler,然后判断所述当前按键事件消息的名称与所述待处理消息的名称是否一致,若一致,消息队列messagequeue会把前按键事件消息分发给handler,所述handler就会处理消息调用函数handlemessage,即通过调用onitemselectlistener.onitemposselect函数将所述当前按键事件消息分发至主线程的处理页面中,利用所述主线程对所述当前待处理消息进行处理,处理完毕后,即能实现导航栏的切换。

这里,若判断单元22判断所述时间间隔不大于所述预设的延迟时间,说明消息队列messagequeue还未将当前按键事件消息分发至主线程的处理页面中,此时将删除所述当前按键事件,根据所述下次按键事件消息对所述导航栏进行切换。

所述判断单元22所述删除所述当前按键事件,根据所述下次按键事件消息对所述导航栏进行切换,具体包括:

利用handler删除所述主线程消息队列中的当前按键事件消息;所述判断单元22还用于判断所述下次按键事件消息的名称与所述待处理消息的名称是否一致,若一致,利用handler.obtainmessage(0)函数获取所述下次按键事件消息;利用handler将所述下次按键事件消息发送至主线程处理页面中;利用所述主线程对所述下次按键事件消息进行处理,处理完毕后,即能实现导航栏的切换。

当然,所述延迟单元21在获取到下次按键事件消息后,也是需要按照预设的延迟时间利用函数handler.sendmessagedelayed(message,300)将下次待处理消息进行延迟,如此不断地进行循环处理。这样,当用户按下遥控器切换导航栏目时,通过handler延迟300ms发送事件消息message,也就是说handler把消息message发送到了消息队列messagequeue,messagequeue会阻塞300ms才分发消息出去,这样用户在快速输入相同方向的两次按键时,避免了频繁请求数据,优化了数据请求。实际应用中,比如,预设的延迟时间为200ms,如果用户每隔500ms按一次键的话,当用户按下两次键时,本实施例提供的方法中,只向服务器发送一次数据请求;但是按照现有的方法来实施的话,每一次按键都需要向服务器发送数据请求,这样就增加了服务器的处理频率,降低了服务器的处理效率,导致用户的操作效率低。

这里,因本实施例提供的方法是基于遥控案器发送的两次按键事件消息是输入同方向来说的,所以在根据所述当前按键事件消息对所述导航栏进行切换之前,所述判断单元22还用于:判断所述当前按键事件消息的第一输入方向与所述下次按键事件消息的第二输入方向是否一致,若一致,则根据所述当前按键事件消息对所述导航栏进行切换。

同样地,所述判断单元22判断下次按键事件消息的第二输入方向与判断当前按键事件消息的第一输入方向的方法相同,具体地,获取下次按键事件消息的第二keyevent事件消息,利用所述第二keyevent事件消息的第二键码值来确定下次按键事件消息的第二输入方向。

本发明实施例提供的切换导航栏的方法及装置能带来的有益效果至少是:

本发明提供了一种切换导航栏的方法及装置,所述方法包括:接收遥控器发送的当前按键事件消息,并按照预设的延迟时间对所述当前按键事件消息进行延迟;接收与当前按键事件消息对应的下次按键事件消息,判断所述下次按键事件消息与所述当前按键事件消息之间的时间间隔是否大于所述预设的延迟时间,若所述时间间隔大于所述预设的延迟时间,则根据所述当前按键事件消息对所述导航栏进行切换;如此,接收到当前按键事件消息后,会按照预设的延迟时间将当前按键事件消息进行延迟,当用户继续按下遥控器切换导航栏目时,接收到下次按键事件消息,只有两次事件消息的时间间隔大于预设的延迟时间后,才会将当前按键事件消息分发至处理页面进行处理,在不大于预设的延迟时间时,则将当前按键事件消息删除,根据下次按键事件消息对所述导航栏进行切换,这样利用消息延迟机制来优化数据请求,降低了数据请求的刷新次数,进而提高了用户的操作效率。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1