一种应用界面显示方法及机顶盒的制作方法

文档序号:7805943阅读:150来源:国知局
一种应用界面显示方法及机顶盒的制作方法
【专利摘要】本发明涉及一种应用界面显示方法及机顶盒。本发明创建环形缓存对应用提交的界面显示申请及界面显示数据首先进行中转缓存,然后通过监控不断获取环形缓存中最新的界面显示申请,调用UpdateScreen操作对最新的界面显示申请进行执行,在一次执行完毕后执行下次时只对此时最新的界面显示申请进行执行,而在上次显示过程中排队等待的界面显示申请不执行,忽略掉UpdateScreen操作显示过程中的界面显示申请,从而避免了排队等待的界面显示申请过多而需要等待很长时间才能被执行的情况,解决了排队等待的界面显示申请过多造成严重的卡顿的问题,极大保证了应用界面显示的流畅程度,大大提高用户体验满意度。
【专利说明】 一种应用界面显不方法及机顶盒
【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种应用界面显示方法及机顶盒。
【背景技术】
[0002]目前机顶盒在对应用界面进行显示时,主要采用直接提交与等待显示方式,SP应用直接调用驱动层的UpdateScreen操作(更新应用图像或界面到显示屏),然后等待UpdateScreen操作完成前一个界面显示后才会执行下一个界面显示。
[0003]通常,UpdateScreen操作执行一次花费时间大约为50ms左右,应用一般都是直接调用此操作,每执行一次都会直接占用应用50ms左右时间。如果应用操作速度低于此时间时,不会看出迟钝现象。但如果应用界面显示进行快速变换更新,应用操作速度高于50ms时间,就会连续调用UpdateScreen操作,由于UpdateScreen操作具有独占性(同一时间只允许一个应用调用),这将导致应用界面显示出现排队调用UpdateScreen操作现象出现,即应用界面显示卡顿,导致用户操作出现响应缓慢的问题。特别在多线程应用同时调用UpdateScreen操作时,应用界面显示出现卡顿现象尤为明显和严重,从而极大影响应用界面显示的流畅程度,直接导致用户体验满意度下降。

【发明内容】

[0004]有鉴于此,有必要针对上述机顶盒应用界面显示出现卡顿的问题,提供一种应用界面显示方法。
[0005]此外,还提供一种机顶盒。
[0006]一种应用界面显示方法,包括如下步骤:
[0007]SlO:创建环形缓存,不断缓存应用所提交的界面显示申请及界面显示数据;
[0008]S20:实时监控所述环形缓存中缓存的界面显示申请;
[0009]S30:获取所述环形缓存中最新的界面显示申请;
[0010]S40:调用UpdateScreen操作,将最新的界面显示申请所对应的界面显示数据进行显示,此次显示执行完毕后返回步骤S30循环进行。
[0011]一种机顶盒,包括:
[0012]缓存创建单元,创建环形缓存,用于不断缓存应用所提交的界面显示申请及界面显示数据;
[0013]驱动层,实时监控所述环形缓存中缓存的界面显示申请,获取环形缓存中最新的界面显示申请,调用UpdateScreen操作,将最新的界面显示申请所对应的界面显示数据进行显示,此次显示执行完毕后再获取此时环形缓存中最新的界面显示申请,调用UpdateScreen操作,循环进行。
[0014]本发明应用界面显示方法及机顶盒,创建环形缓存对应用提交的界面显示申请及界面显示数据首先进行中转缓存,然后通过监控不断获取环形缓存中最新的界面显示申请,调用UpdateScreen操作对最新的界面显示申请进行执行,在一次执行完毕后执行下次时只对此时最新的界面显示申请进行执行,而在上次显示过程中排队等待的界面显示申请不执行,忽略掉UpdateScreen操作显示过程中的界面显示申请,从而避免了排队等待的界面显示申请过多而需要等待很长时间才能被执行的情况,解决了排队等待的界面显示申请过多造成严重的卡顿的问题,极大保证了应用界面显示的流畅程度,大大提高用户体验满意度。
【专利附图】

【附图说明】
[0015]图1是一个实施例中的应用界面显示方法的流程图;
[0016]图2是一个实施例中的机顶盒的结构图。
【具体实施方式】
[0017]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0018]图1是一个实施例中的应用界面显示方法的流程图。如图1所示,该方法包括:
[0019]SlO:创建环形缓存,不断缓存应用所提交的界面显示申请及界面显示数据。
[0020]机顶盒在对应用界面进行显示时,应用会向机顶盒提交界面显示申请以及界面显示数据。原本的操作是,应用调用驱动层的UpdateScreen操作,UpdateScreen操作以串行的方式接收应用提交的界面显示申请以及界面显示数据,即UpdateScreen操作对应用提交的每个界面显示申请都要进行接收并执行,将每个界面显示申请对应的界面显示数据进行显示,对应用界面显示进行更新。由于UpdateScreen操作执行一次需要占用50ms左右的时间,如果应用在UpdateScreen操作执行过程中,即在50ms内提交多个界面显示申请,则后提交的界面显示申请就需要排队等待,等到UpdateScreen操作执行完一次后再执行后面排队的界面显示申请。例如,应用A在50ms内提出了 a、b、c三个界面显示申请,此时UpdateScreen操作首先执行a,则b和c就需要等待,等到UpdateScreen操作执行完a后,再执行b,执行完b后最后执行C。由于每一次UpdateScreen操作都要占用50ms,在这之间应用可能会提交了很多界面显示申请,尤其是多线程应用的情况下,那么排队等待的节目显示申请就会很多,需要等待很长时间才能被执行,这就会造成严重的卡顿。
[0021]在该实施例中,预先创建一个环形缓存,环形缓存不断接收应用所提交的界面显示申请和界面显示数据,并进行循环缓存,对应用提交的界面显示申请和界面显示数据进行中转。应用所提交的所有界面显示申请和数据都会先提交到环形缓存中进行缓存,而非直接驱动层的调用UpdateScreen操作。这样可以高效循环存储多个节目显示申请和数据,在多个线程应用同时提交申请时,只会增加环形缓存内的界面显示申请记录个数,并不占用显示的操作时间。
[0022]在进一步的实施方式中,环形缓存包括一个写指针、一个读指针和数据缓存区。写指针和读指标分别用来控制数据缓存区的写入和读取。写指针或者读指针移动到数据缓存区末尾时,均会自动回到数据缓存区的开头,进行循环。数据缓存区具有预定空间,可缓存多个界面显示申请和界面显示数据。
[0023]创建环形缓存后,应用或者驱动层会访问环形缓存进行写读操作。如果有多个写操作或者读操作同时访问环形缓存,就会存在多个写操作或者读操作同时操作一片数据缓存区的情况,这就会影响数据缓冲区数据的正确性,尤其是在多线程应用的情况下。为避免这种数据异常情况发生,保证数据的正确性,步骤S1还包括:创建互斥锁,互斥锁每次只允许一个写操作或者读操作对环形缓存区进行操作,对环形缓存区进行保护。具体的,应用在向环形缓存区写入界面显示申请和数据时,首先获取互斥锁,得到对环形缓存的写入权限,互斥锁只允许获得互斥锁的应用对环形缓存进行写入,其他应用不能写入,在写入后立即释放互斥锁。在应用或者驱动层对环形缓存进行读取时,也需要首先获取互斥锁,得到对环形缓存的读取权限,在读取完毕后立即释放互斥锁。通过创建互斥锁,对环形缓存的读取操作进行限制,每次只允许一个应用对环形缓存进行访问,从而保证了环形缓存区的数据的正确性。
[0024]S20:实时监控环形缓存中缓存的界面显示申请。
[0025]在环形缓存不断接收应用所提交的界面显示申请和界面显示数据,并进行循环缓存后,需要实时监控环形缓存中的界面显示申请,以便实时了解环形缓存中的界面显示申请的状况。
[0026]在该实施例中,步骤S20具体为:驱动层创建一个独立线程,独立线程对环形缓存进行实时监控,以及调用UpdateScreen操作执行界面显示。这样驱动层创建一个单独的独立线程,实时持续监控环形缓存的状态,监控到有界面显示申请,就会立即读取出进行处理,达到快速响应的效果;并且将调用频率高且耗时的UpdateScreen操作放入到独立线程中来执行,使应用主线程摆脱显示高耗时的困扰,提高应用界面操作和显示的流畅程度。
[0027]S30:获取环形缓存中最新的界面显示申请。
[0028]根据对环形缓存的实时监控,能够了解环形缓存中界面显示申请的写入时间和顺序。根据监控结果,始终获取环形缓存中最新的(即最后写入的)界面显示申请。
[0029]在该实施例中,步骤S30具体为:驱动层获取互斥锁,获取对环形缓存的读取权限,根据对环形缓存的实时监控读取环形缓存中最新的界面显示申请,读取后立即释放互斥锁,循环进行(下一次读取再次获取互斥锁,循环进行)。这样驱动层在环形缓存不断缓存应用提交的界面显示申请时,始终获取当前最新的界面显示申请,也即环形缓存中最后缓存写入的界面显示申请。例如,环形缓存中此刻最新的界面显示申请为m,则此刻获取m,下一时刻环形缓存中又缓存写入了界面显示申请n,则要获取的最新界面显示申请则变成了 n,获取η。
[0030]同时,为有效节省环形缓存的空间和缓存效率,步骤S30进一步还包括:获取环形缓存中最新的界面显示申请后清除之前缓存的界面显示申请,以及时清空环形缓存的空间,使得环形缓存处于空闲状态,以便随时可以进行读写操作。
[0031]S40:调用UpdateScreen操作,将最新的界面显示申请所对应的界面显示数据进行显示,此次显示执行完毕后返回步骤S30循环进行。
[0032]在驱动层获取环形缓存中最新的界面显示申请后,即调用UpdateScreen操作来对最新的界面显示申请进行执行,UpdateScreen操作将最新的界面显示申请所对应的界面显示数据进行显示,从而完成显示。在此次显示执行完之后,返回步骤S30继续循环完成。这样在UpdateScreen操作在执行完一次显示操作后,再次获取此时(即完成这次显示对应的时刻)最新的界面显示申请执行显示操作,仅对此时最新的界面显示申请执行显示操作,而在上次显示过程中排队等待的界面显示申请不执行,由于应用界面显示最终总是由最新的界面显示申请覆盖前一个界面显示申请进行更新,且UpdateScreen操作执行一次需要50ms,远小于人眼的识别时间,忽略掉UpdateScreen操作显示过程中的界面显示申请不会对应用界面显示和用户观看产生影响,避免了排队等待的界面显示申请过多而需要等待很长时间才能被执行的情况,从而解决了排队等待的界面显示申请过多造成严重的卡顿的问题,极大保证了应用界面显示的流畅程度,大大提高用户体验满意度。
[0033]在该实施例中,由独立线程来调用UpdateScreen操作。单独使用一个独立线程来调用UpdateScreen操作,进行显示处理,不占用应用的主线程时间,达到应用的快速操作和驱动层的显示互不干扰,又能相互协作的效果。
[0034]该应用界面显示方法,创建环形缓存对应用提交的界面显示申请及界面显示数据首先进行中转缓存,然后通过监控不断获取环形缓存中最新的界面显示申请,调用UpdateScreen操作对最新的界面显示申请进行执行,在一次执行完毕后执行下次时只对此时刻最新的界面显示申请进行执行,而在上次显示过程中排队等待的界面显示申请不执行,忽略掉UpdateScreen操作显示过程中的界面显示申请,从而避免了排队等待的界面显示申请过多而需要等待很长时间才能被执行的情况,解决了排队等待的界面显示申请过多造成严重的卡顿的问题,极大保证了应用界面显示的流畅程度,大大提高用户体验满意度。
[0035]同时,本发明还提供一种机顶盒。如图2所示,该机顶盒包括:
[0036]缓存创建单元100,创建环形缓存,用于不断缓存应用所提交的界面显示申请及界面显示数据。
[0037]机顶盒在对应用界面进行显示时,应用会向机顶盒提交界面显示申请以及界面显示数据。原本的操作是,应用调用驱动层的UpdateScreen操作,UpdateScreen操作以串行的方式接收应用提交的界面显示申请以及界面显示数据,即UpdateScreen操作对应用提交的每个界面显示申请都要进行接收并执行,将每个界面显示申请对应的界面显示数据进行显示,对应用界面显示进行更新。由于UpdateScreen操作执行一次需要占用50ms左右的时间,如果应用在UpdateScreen操作执行过程中,即在50ms内提交多个界面显示申请,则后提交的界面显示申请就需要排队等待,等到UpdateScreen操作执行完一次后再执行后面排队的界面显示申请。例如,应用A在50ms内提出了 a、b、c三个界面显示申请,此时UpdateScreen操作首先执行a,则b和c就需要等待,等到UpdateScreen操作执行完a后,再执行b,执行完b后最后执行C。由于每一次UpdateScreen操作都要占用50ms,在这之间应用可能会提交了很多界面显示申请,尤其是多线程应用的情况下,那么排队等待的节目显示申请就会很多,需要等待很长时间才能被执行,这就会造成严重的卡顿。
[0038]在该实施例中,缓存创建单元100预先创建一个环形缓存,环形缓存不断接收应用所提交的界面显示申请和界面显示数据,并进行循环缓存,对应用提交的界面显示申请和界面显示数据进行中转。应用所提交的所有界面显示申请和数据都会先提交到环形缓存中进行缓存,而非直接驱动层的调用UpdateScreen操作。这样可以高效循环存储多个节目显示申请和数据,在多个线程应用同时提交申请时,只会增加环形缓存内的界面显示申请记录个数,并不占用显示的操作时间。
[0039]在进一步的实施方式中,环形缓存包括一个写指针、一个读指针和数据缓存区。写指针和读指标分别用来控制数据缓存区的写入和读取。写指针或者读指针移动到数据缓存区末尾时,均会自动回到数据缓存区的开头,进行循环。数据缓存区具有预定空间,可缓存多个界面显示申请和界面显示数据。
[0040]缓存创建单元100创建环形缓存后,应用或者驱动层会访问环形缓存进行写读操作。如果有多个写操作或者读操作同时访问环形缓存,就会存在多个写操作或者读操作同时操作一片数据缓存区的情况,这就会影响数据缓冲区数据的正确性,尤其是在多线程应用的情况下。为避免这种数据异常情况发生,保证数据的正确性,缓存创建单元100进一步创建互斥锁,互斥锁用于每次只允许一个写操作或者读操作对环形缓存区进行操作,对环形缓存区进行保护。具体的,应用在向环形缓存区写入界面显示申请和数据时,首先获取互斥锁,得到对环形缓存的写入权限,互斥锁只允许获得互斥锁的应用对环形缓存进行写入,其他应用不能写入,在写入后立即释放互斥锁。在应用或者驱动层对环形缓存进行读取时,也需要首先获取互斥锁,得到对环形缓存的读取权限,在读取完毕后立即释放互斥锁。通过创建互斥锁,对环形缓存的读取操作进行限制,每次只允许一个应用对环形缓存进行访问,从而保证了环形缓存区的数据的正确性。
[0041]驱动层200,实时监控环形缓存中缓存的界面显示申请,获取环形缓存中最新的界面显示申请,调用UpdateScreen操作,将最新的界面显示申请所对应的界面显示数据进行显示,此次显示执行完毕后再获取此时环形缓存中最新的界面显示申请,调用UpdateScreen操作,循环进行。
[0042]在环形缓存不断接收应用所提交的界面显示申请和界面显示数据,并进行循环缓存后,驱动层200需要实时监控环形缓存中的界面显示申请,以便实时了解环形缓存中的界面显示申请的状况。
[0043]在该实施例中,驱动层200创建一个独立线程,独立线程对环形缓存进行实时监控,以及调用UpdateScreen操作执行界面显示。这样驱动层200创建一个单独的独立线程,实时持续监控环形缓存的状态,监控到有界面显示申请,就会立即读取出进行处理,达到快速响应的效果;并且将调用频率高且耗时的UpdateScreen操作放入到独立线程中来执行,使应用主线程摆脱显示高耗时的困扰,提高应用界面操作和显示的流畅程度。
[0044]根据对环形缓存的实时监控,驱动层200能够了解环形缓存中界面显示申请的写入时间和顺序。根据监控结果,驱动层200始终获取环形缓存中最新的(即最后写入的)界面显示申请。
[0045]在该实施例中,驱动层200获取互斥锁,获取对环形缓存的读取权限,根据对环形缓存的实时监控读取环形缓存中最新的界面显示申请,读取后立即释放互斥锁,循环进行。这样驱动层200在环形缓存不断缓存应用提交的界面显示申请时,始终获取当前最新的界面显示申请,也即环形缓存中最后缓存写入的界面显示申请。例如,环形缓存中此刻最新的界面显示申请为m,则此刻驱动层200获取m,下一时刻环形缓存中又缓存写入了界面显示申请n,则驱动层200要获取的最新界面显示申请则变成了 n,获取η。
[0046]同时,为有效节省环形缓存的空间和缓存效率,驱动层200获取环形缓存中最新的界面显示申请后清除之前缓存的界面显示申请,以及时清空环形缓存的空间,使得环形缓存处于空闲状态,以便随时可以进行读写操作。
[0047]在驱动层200获取环形缓存中最新的界面显示申请后,即调用UpdateScreen操作来对最新的界面显示申请进行执行,UpdateScreen操作将最新的界面显示申请所对应的界面显示数据进行显示,从而完成应用界面显示。在此次显示执行完之后,再获取此时环形缓存中最新的界面显示申请,调用UpdateScreen操作,循环进行。这样在UpdateScreen操作在执行完一次显示操作后,再次获取此时(即完成这次显示对应的时刻)最新的界面显示申请执行显示操作,仅对此时最新的界面显示申请执行显示操作,而在上次显示过程中排队等待的界面显示申请不执行,由于应用界面显示最终总是由最新的界面显示申请覆盖前一个界面显示申请进行更新,且UpdateScreen操作执行一次需要50ms,远小于人眼的识别时间,忽略掉UpdateScreen操作显示过程中的界面显示申请不会对应用界面显示和用户观看产生影响,避免了排队等待的界面显示申请过多而需要等待很长时间才能被执行的情况,从而解决了排队等待的界面显示申请过多造成严重的卡顿的问题,极大保证了应用界面显示的流畅程度,大大提高用户体验满意度。
[0048]在该实施例中,由独立线程来调用UpdateScreen操作。单独使用一个独立线程来调用UpdateScreen操作,进行显示处理,不占用应用的主线程时间,达到应用的快速操作和驱动层的显示互不干扰,又能相互协作的效果。
[0049]该机顶盒,缓存创建单元100创建环形缓存对应用提交的界面显示申请及界面显示数据首先进行中转缓存,然后驱动层200通过监控不断获取环形缓存中最新的界面显示申请,调用UpdateScreen操作对最新的界面显示申请进行执行,在一次执行完毕后执行下次时只对此时最新的界面显示申请进行执行,而在上次显示过程中排队等待的界面显示申请不执行,忽略掉UpdateScreen操作显示过程中的界面显示申请,从而避免了排队等待的界面显示申请过多而需要等待很长时间才能被执行的情况,解决了排队等待的界面显示申请过多造成严重的卡顿的问题,极大保证了应用界面显示的流畅程度,大大提高用户体验满意度。
[0050]本发明应用界面显示方法及机顶盒,创建环形缓存对应用提交的界面显示申请及界面显示数据首先进行中转缓存,然后通过监控不断获取环形缓存中最新的界面显示申请,调用UpdateScreen操作对最新的界面显示申请进行执行,在一次执行完毕后执行下次时只对此时最新的界面显示申请进行执行,而在上次显示过程中排队等待的界面显示申请不执行,忽略掉UpdateScreen操作显示过程中的界面显示申请,从而避免了排队等待的界面显示申请过多而需要等待很长时间才能被执行的情况,解决了排队等待的界面显示申请过多造成严重的卡顿的问题,极大保证了应用界面显示的流畅程度,大大提高用户体验满意度。
[0051 ] 以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种应用界面显示方法,其特征在于,包括如下步骤: SlO:创建环形缓存,不断缓存应用所提交的界面显示申请及界面显示数据; S20:实时监控所述环形缓存中缓存的界面显示申请; S30:获取所述环形缓存中最新的界面显示申请; S40:调用UpdateScreen操作,将最新的界面显示申请所对应的界面显示数据进行显示,此次显示执行完毕后返回步骤S30循环进行。
2.根据权利要求1所述的应用界面显示方法,其特征在于,所述步骤SlO还包括:创建互斥锁,互斥锁每次只允许一个写操作或者读操作对所述环形缓存区进行操作,对所述环形缓存区进行保护。
3.根据权利要求1所述的应用界面显示方法,其特征在于,所述步骤S20具体为: 驱动层创建一个独立线程,所述独立线程对所述环形缓存进行实时监控,以及调用UpdateScreen操作执行界面显示。
4.根据权利要求2所述的应用界面显示方法,其特征在于,所述步骤S30具体为: 驱动层获取所述互斥锁,获取对所述环形缓存的读取权限,根据对所述环形缓存的实时监控读取所述环形缓存中最新的界面显示申请,读取后立即释放所述互斥锁,循环进行。
5.根据权利要求1至4任一所述的应用界面显示方法,其特征在于,所述步骤S30还包括: 获取环形缓存中最新的界面显示申请后清除之前缓存的界面显示申请。
6.一种机顶盒,其特征在于,包括: 缓存创建单元,创建环形缓存,用于不断缓存应用所提交的界面显示申请及界面显示数据; 驱动层,实时监控所述环形缓存中缓存的界面显示申请,获取环形缓存中最新的界面显示申请,调用UpdateScreen操作,将最新的界面显示申请所对应的界面显示数据进行显示,此次显示执行完毕后再获取此时环形缓存中最新的界面显示申请,调用UpdateScreen操作,循环进行。
7.根据权利要求6所述的机顶盒,其特征在于,所述缓存创建单元创建互斥锁,所述互斥锁用于每次只允许一个写操作或者读操作对环形缓存区进行操作,对所述环形缓存区进行保护。
8.根据权利要求6所述的机顶盒,其特征在于,所述驱动层创建一个独立线程,所述独立线程对所述环形缓存进行实时监控,以及调用UpdateScreen操作执行界面显示。
9.根据权利要求7所述的机顶盒,其特征在于,所述驱动层获取所述互斥锁,获取对所述环形缓存的读取权限,根据对所述环形缓存的实时监控读取所述环形缓存中最新的界面显示申请,读取后立即释放所述互斥锁,循环进行。
10.根据权利要求6至9任一所述的机顶盒,其特征在于,所述驱动层获取环形缓存中最新的界面显示申请后清除之前缓存的界面显示申请。
【文档编号】H04N21/458GK104038806SQ201410258016
【公开日】2014年9月10日 申请日期:2014年6月11日 优先权日:2014年6月11日
【发明者】杨书杰 申请人:深圳市九洲电器有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1