CN108153581B - 一种事件去抖动的方法及装置 - Google Patents
一种事件去抖动的方法及装置 Download PDFInfo
- Publication number
- CN108153581B CN108153581B CN201611101725.5A CN201611101725A CN108153581B CN 108153581 B CN108153581 B CN 108153581B CN 201611101725 A CN201611101725 A CN 201611101725A CN 108153581 B CN108153581 B CN 108153581B
- Authority
- CN
- China
- Prior art keywords
- event
- initial
- value
- waiting time
- processing logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供了一种事件去抖动的方法及装置,方法包括:接收当前事件;在预设的等待时间内,判断是否存在待处理事件;若存在所述待处理事件,判断是否存在待处理的初始事件,若存在所述待处理的初始事件,则执行所述初始事件的处理逻辑;当执行所述初始事件的处理逻辑后,到达预设的延迟等待时间时,执行结束事件的处理逻辑;所述初始事件为抖动事件发生时不占用资源的状态事件,所述结束事件为所述抖动事件中最后触发的事件;如此,通过预设一初始事件,在有抖动事件发生时,实现执行初始事件,并过滤掉中间的抖动事件不执行,直接执行结束事件,减少了逻辑处理,有效的降低了处理器及内存的占用,提高了应用的稳定性,进而提高了用户的操作效率。
Description
技术领域
本发明涉及终端设备技术领域,尤其涉及一种事件去抖动的方法及装置。
背景技术
安卓应用中,事件的触发可能是断断续续也可能是连续的,当连续触发的间隔时间很短,短到前面的事件还没来的及处理完又触发了新的事件,或处理的事件影响用户的体验,界面频繁的变化时,我们称这种连续触发的事件为抖动事件。
在抖动事件发生后,会连续处理抖动事件,占用大量的处理器及内存,导致应用不稳定,降低了用户的操作效率。
发明内容
针对现有技术存在的问题,本发明实施例提供了一种事件去抖动的方法及装置,用于解决现有技术中在抖动事件发生后,会连续处理抖动事件,占用大量的处理器及内存,导致应用不稳定,降低了用户的操作效率的技术问题。
本发明提供一种事件去抖动的方法,所述方法包括:
接收当前事件;
在预设的等待时间内,判断是否存在待处理事件;
若存在所述待处理事件,判断是否存在待处理的初始事件,若存在所述待处理的初始事件,则执行所述初始事件的处理逻辑;
当执行所述初始事件的处理逻辑后,到达预设的延迟等待时间时,执行结束事件的处理逻辑;其中,
所述初始事件为抖动事件发生时不占用资源的状态事件,所述结束事件为所述抖动事件中最后触发的事件。
上述方案中,判断是否存在待处理事件,具体包括:
获取变量hasEvent的值;
判断所述hasEvent的值是否为true;
若所述变量hasEvent的值为true,则确定存在所述待处理事件。
上述方案中,判断是否存在待处理的初始事件,具体包括:
获取变量hasInitEvent的值;
判断所述hasInitEvent的值是否为true;
若所述变量hasInitEvent的值为true,则确定存在所述待处理的初始事件。
上述方案中,在预设的延迟等待时间内,执行结束事件的处理逻辑之前,所述方法还包括:
将所述hasInitEvent的值赋值为false;
调用timer.cancel()取消所述预设的等待时间后的延迟计时;
调用timer.schedule()重新计时所述预设的延迟等待时间。
上述方案中,若不存在所述待处理事件时,所述方法还包括:
将所述当前事件标记为结束事件;
调用timer.schedule()重新计时所述预设的等待时间;
到达所述预设的等待时间时,执行所述结束事件的处理逻辑。
本发明还提供一种事件去抖动的装置,所述装置包括:
接收单元,用于接收当前事件;
第一判断单元,用于在预设的等待时间内,判断是否存在待处理事件;
第二判断单元,用于在所述待处理事件时,判断是否存在待处理的初始事件;
第一执行单元,用于存在所述待处理的初始事件时,执行所述初始事件的处理逻辑;
第二执行单元,用于当执行所述初始事件的处理逻辑后,到达预设的延迟等待时间时,执行结束事件的处理逻辑;其中,
所述初始事件为抖动事件发生时不占用资源的状态事件,所述结束事件为所述抖动事件中最后触发的事件。
上述方案中,所述第一判断单元具体包括:
第一获取子单元,用于获取变量hasEvent的值;
第一判断子单元,用于判断所述hasEvent的值是否为true;
第一确定子单元,用于在所述变量hasEvent的值为true时,确定存在所述待处理事件。
上述方案中,所述第二判断单元具体包括:
第二获取子单元,用于获取变量hasInitEvent的值;
第二判断子单元,用于判断所述hasInitEvent的值是否为true;
第二确定子单元,用于在所述变量hasInitEvent的值为true,确定存在所述待处理的初始事件。
上述方案中,所述装置还包括:
赋值单元,用于在预设的延迟等待时间内,执行结束事件的处理逻辑之前,将所述hasInitEvent的值赋值为false;
第一调用单元,用于调用timer.cancel()取消所述预设的等待时间后的延迟计时;
第二调用单元,用调用timer.schedule()重新计时所述预设的延迟等待时间。
上述方案中,若不存在所述待处理事件时,所述装置还包括:
标记单元,用于将所述当前事件标记为结束事件;
第二调用单元,用于调用timer.schedule()重新计时所述预设的等待时间;
第二执行单元,用于在到达所述预设的等待时间时,执行所述结束事件的处理逻辑。
本发明提供了一种事件去抖动的方法及装置,所述方法包括:接收当前事件;在预设的等待时间内,判断是否存在待处理事件;若存在所述待处理事件,判断是否存在待处理的初始事件,若存在所述待处理的初始事件,则执行所述初始事件的处理逻辑;当执行所述初始事件的处理逻辑后,到达预设的延迟等待时间时,执行结束事件的处理逻辑;其中,所述初始事件为抖动事件发生时不占用资源的状态事件,所述结束事件为所述抖动事件中最后触发的事件;如此,通过预设一初始事件,在有抖动事件发生时,实现执行初始事件,并过滤掉中间的抖动事件不执行,直接执行结束事件,减少了逻辑处理,有效的降低了处理器及内存的占用,提高了应用的稳定性,进而提高了用户的操作效率。
附图说明
图1为本发明实施例一提供的事件去抖动的方法流程示意图;
图2为本发明实施例二提供的事件去抖动的装置结构示意图;
图3为本发明实施例二提供的第一判断单元的装置结构示意图;
图4为本发明实施例二提供的第二判断单元的装置结构示意图。
具体实施方式
为了解决现有技术中在抖动事件发生后,会连续处理抖动事件,占用大量的处理器及内存,导致应用不稳定,降低了用户的操作效率的技术问题,本发明提供了一种事件去抖动的方法及装置,所述方法包括:接收当前事件;在预设的等待时间内,判断是否存在待处理事件;若存在所述待处理事件,判断是否存在待处理的初始事件,若存在所述待处理的初始事件,则执行所述初始事件的处理逻辑;当执行所述初始事件的处理逻辑后,到达预设的延迟等待时间时,执行结束事件的处理逻辑;其中,所述初始事件为抖动事件发生时不占用资源的状态事件,所述结束事件为所述抖动事件中最后触发的事件。
下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。
实施例一
本实施例提供一种事件去抖动的方法,如图1所示,所述方法包括:
S101,接收当前事件。
本步骤中,当前无事件处理时,通过调用安卓系统onFocusChanged方法接收当前事件。所述事件可以包括安卓系统中的多种事件,比如:预览视频焦点事件,网络变化事件等。
S102,在预设的等待时间内,判断是否存在待处理事件。
本步骤中,接收到当前事件后,在预设的等待时间内,判断是否存在待处理事件,所述预设的等待时间可以为接收到当前事件后的1s或2s内。本实施例中,所述预设的等待时间为接收到当前事件后的1s内。
这里,判断是否存在待处理事件,具体包括:获取变量hasEvent的值;判断所述hasEvent的值是否为true;若所述变量hasEvent的值为true,则确定存在所述待处理事件;若所述变量hasEvent的值为false,则确定不存在所述待处理事件。
若存在所述待处理事件,则执行步骤S103;若不存在所述待处理事件,则将当前事件标记为结束事件,调用Timer计时器timer.schedule延迟计时,并可根据实际需要设置延迟时间,及单次抖动时间,到达延迟时间时,执行结束事件。其中,是通过执行计时器任务TimerTask的run方法,调用结束事件,并执行结束事件endEvent的处理逻辑。到达延迟等待时间时,将变量hasEvent、变量hasInitEvent赋值为false;将变量initEvent和endEvent赋值为空。所述变量initEvent用于记录初始事件。
这里,所述结束事件endEvent为所述抖动事件中最后触发的事件;
S103,判断是否存在待处理的初始事件,若存在所述待处理的初始事件,则执行所述初始事件的处理逻辑。
本步骤中,当存在所述待处理事件时,进一步判断是否存在在待处理的初始事件,若存在所述待处理的初始事件initEvent,则执行所述初始事件initEvent的处理逻辑。其中,判断是否存在待处理的初始事件initEvent,具体包括:获取变量hasInitEvent的值;判断所述hasInitEvent的值是否为true;若所述变量hasInitEvent的值为true,则确定存在所述待处理的初始事件。若所述变量hasInitEvent的值为false,则确定初始事件已处理,不存在所述待处理的初始事件。
当不存在初始事件时,表示初始事件已处理,则调用timer.cancel()取消当前延迟计时,调用timer.schedule()重新计时,到达预设的延迟等待时间时,执行结束事件的处理逻辑。
其中,所述初始事件为抖动事件发生时不占用资源的状态事件;比如,当事件为预览视频焦点事件时,初始事件为失去焦点;当事件为网络变化事件时,初始事件为断开网络。
S104,当处理所述初始事件后,到达预设的延迟等待时间时,执行结束事件的处理逻辑。
本步骤中,执行所述初始事件initEvent的处理逻辑后,将变量hasInitEvent的值赋值为false,表示初始事件initEvent已处理,调用timer.cancel()取消所述预设的等待时间后的延迟计时;调用timer.schedule()重新计时所述延迟等待时间,到达预设的延迟等待时间时,执行结束事件的处理逻辑,并将变量hasEvent的值赋值为true。
这里,当到达所述延迟等待时间时,比如延迟等待1s后,若没有接收到待处理事件,则执行计时器任务TimerTask的run方法,调用结束事件,执行结束事件的处理逻辑,并将变量hasEvent和hasInitEvent赋值为false,将变量initEvent和endEvent赋值为空。
当然,当执行结束事件的处理逻辑后的等待时间内,没有接收到待处理事件,执行计时器任务TimerTask的run方法,调用结束事件,并将变量hasEvent和hasInitEvent赋值为false,将变量initEvent和endEvent赋值为空。
当执行结束事件的处理逻辑后的等待时间内,接收到待处理事件,则调用timer.cancel()取消当前延迟计时,调用timer.schedule()重新计时,到达预设的延迟等待时间时,执行结束事件的处理逻辑,并循环执行该步骤。
实施例二
相应于实施例一,本实施例还提供一种事件去抖动的装置,如图2所示,所述装置包括:接收单元21、第一判断单元22、第二判断单元23、第一执行单元24、第二执行单元25;其中,
所述接收单元21用于接收当前事件;具体地,当前无事件处理时,所述接收单元21通过调用安卓系统onFocusChanged方法接收当前事件。所述事件可以包括安卓系统中的多种事件,比如:预览视频焦点事件,网络变化事件等。
当所述接收单元21接收到事件后,所述第一判断单元22用于在预设的等待时间内,判断是否存在待处理事件;所述预设的等待时间可以为接收到当前事件后的1s或2s内。本实施例中,所述预设的等待时间为接收到当前事件后的1s内。
这里,参见图3,所述第一判断单元22具体包括:第一获取子单元31、第一判断子单元32及第一确定子单元33;其中,当所述第一判断单元21判断是否存在待处理事件时,所述第一获取子单元31用于获取变量hasEvent的值;第一判断子单元32用于判断所述hasEvent的值是否为true;若所述变量hasEvent的值为true,第一确定子单元33则确定存在所述待处理事件;若所述变量hasEvent的值为false,第一确定子单元33则确定不存在所述待处理事件。
当所述第一确定子单元33确定存在所述待处理事件时,所述第二判断单元23用于在所述待处理事件时,判断是否存在待处理的初始事件;若存在所述待处理的初始事件时,第一执行单元24执行所述初始事件的处理逻辑。
其中,所述初始事件为抖动事件发生时不占用资源的状态事件;比如,当事件为预览视频焦点事件时,初始事件为失去焦点;当事件为网络变化事件时,初始事件为断开网络。
其中,参见图4,所述判断第二判断单元23包括:第二获取子单元41、第二判断子单元42及第二确定子单元43;其中,当所述第二判断单元23判断是否存在待处理的初始事件initEvent时,所述第二获取子单元41用于获取变量hasInitEvent的值;第二判断子单元42用于判断所述hasInitEvent的值是否为true;若所述变量hasInitEvent的值为true,第二确定子单元43则确定存在所述待处理的初始事件。若所述变量hasInitEvent的值为false,第二确定子单元43则确定初始事件已处理,不存在所述待处理的初始事件。
这里,所述装置还包括:赋值单元26、第一调用单元27及第二调用单元28;若所述第一执行单元24执所述初始事件initEvent的处理逻辑后,所述赋值单元26用于将变量hasInitEvent的值赋值为false,表示初始事件initEvent已处理,第一调用单元27用于调用timer.cancel()取消所述预设的等待时间后的延迟计时;第二调用单元28用于调用timer.schedule()重新计时所述延迟等待时间,到达预设的延迟等待时间时,所述第二执行单元25用于执行结束事件的处理逻辑,并将变量hasEvent的值赋值为true。这里,所述结束事件endEvent为所述抖动事件中最后触发的事件。
这里,当到达所述延迟等待时间时,比如延迟等待1s后,若没有接收到待处理事件,所述第二执行单元25还用于执行计时器任务TimerTask的run方法,调用结束事件,执行结束事件的处理逻辑,所述赋值单元26并将变量hasEvent和hasInitEvent赋值为false,将变量initEvent和endEvent赋值为空。
当不存在初始事件时,表示初始事件已处理,同样的,第一调用单元27用于调用timer.cancel()取消当前延迟计时,所述第二调用单元28用于调用timer.schedule()重新计时,到达预设的延迟等待时间时,所述第二执行单元25执行结束事件的处理逻辑。
这里,所述装置还包括:标记单元29;若第一确定子单元33确定不存在所述待处理事件时,所述标记单元29用于将当前事件标记为结束事件,所述第二调用单元28还用于调用Timer计时器timer.schedule延迟计时,并可根据实际需要设置延迟时间及单次抖动时间,到达延迟时间时,执行结束事件。
其中,所述第二调用单元28是通过执行计时器任务TimerTask的run方法,调用结束事件,并执行结束事件endEvent的处理逻辑。到达延迟等待时间时,所述赋值单元26则用于将变量hasEvent、变量hasInitEvent赋值为false;将变量initEvent和endEvent赋值为空。
当然,当执行结束事件的处理逻辑后的等待时间内,所述接收单元21没有接收到待处理事件,所述第二调用单元28则执行计时器任务TimerTask的run方法,调用结束事件,所述赋值单元25并将变量hasEvent和hasInitEvent赋值为false,将变量initEvent和endEvent赋值为空。
当执行结束事件的处理逻辑后的等待时间内,所述接收单元21接收到待处理事件,所述第一调用单元27则调用timer.cancel()取消当前延迟计时,所述第二调用单元28调用timer.schedule()重新计时,到达预设的延迟等待时间时,所述第二执行单元25执行结束事件的处理逻辑,并循环执行。
实施例三
实际应用中,当事件为览视频焦点事件时,该事件去抖动的方法如下:
当前无事件处理时,当用户按下遥控器上的方向键触发焦点事件列表项n(获得焦点的第几项)获得焦点时,通过调用安卓系统onFocusChanged方法接收当前事件。
接收到当前事件后,在预设的等待时间内,判断是否存在待处理事件,所述预设的等待时间可以为接收到当前事件后的1s或2s内。本实施例中,所述预设的等待时间为接收到当前事件后的1s内。
这里,判断是否存在待处理事件,具体包括:获取变量hasEvent的值;判断所述hasEvent的值是否为true;若所述变量hasEvent的值为true,则确定存在所述待处理事件;若所述变量hasEvent的值为false,则确定不存在所述待处理事件。
若不存在所述待处理事件,则将当前事件标记为结束事件,调用Timer计时器timer.schedule延迟计时,并可根据实际需要设置延迟时间,及单次抖动时间,到达延迟时间时,执行结束事件。其中,是通过执行计时器任务TimerTask的run方法,调用结束事件获得列表项n获得焦点,并执行结束事件endEvent的处理逻辑,即列表项n开始预览视频。并将变量hasEvent、变量hasInitEvent赋值为false;将变量initEvent和endEvent赋值为空。其中,所述变量initEvent用于记录初始事件,所述初始事件为抖动事件发生时不占用资源的状态事件,因此本实施例中将所述初始事件设置为失去焦点事件,将所述结束事件设置为列表项n获得焦点事件。以上即是在等待时间内只有一个焦点事件,执行该焦点事件列表项n获得焦点预览视频,即没有发生抖动,抖动结束。
当存在所述待处理事件时,进一步判断是否存在在待处理的初始事件,若存在所述待处理的初始事件initEvent,则执行所述初始事件initEvent的处理逻辑,即失去焦点,不预览视频。其中,判断是否存在待处理的初始事件initEvent,具体包括:获取变量hasInitEvent的值;判断所述hasInitEvent的值是否为true;若所述变量hasInitEvent的值为true,则确定存在所述待处理的初始事件。若所述变量hasInitEvent的值为false,则确定初始事件已处理,不存在所述待处理的初始事件。
并且,执行所述初始事件initEvent的处理逻辑后,将变量hasInitEvent的值赋值为false,表示初始事件initEvent已处理,调用timer.cancel()取消所述预设的等待时间后的延迟计时;调用timer.schedule()重新计时所述延迟等待时间,到达预设的延迟等待时间时,执行结束事件的处理逻辑,即执行该焦点事件列表项n获得焦点预览视频,并将变量hastEvent的值赋值为true。以上即是在一个等待时间内有两个焦点事件,抖动开始时,先执行初始事件,默认事件失去焦点不预览视频,执行该焦点事件列表项n获得焦点预览视频,即没有发生抖动,抖动结束。
这里,当到达所述延迟等待时间时,比如延迟等待1s后,若没有接收到待处理事件,则执行计时器任务TimerTask的run方法,调用结束事件,即执行该焦点事件列表项n获得焦点预览视频,并将变量hasEvent和hasInitEvent赋值为false,将变量initEvent和endEvent赋值为空。以上即是在延迟(两个)等待时间内有两个焦点事件,抖动开始时(1s时),先执行初始事件,默认事件失去焦点不预览视频,延迟等待时间到达时(2s时)执行该焦点事件列表项n获得焦点预览视频,即抖动发生了一次,抖动结束。
进一步地,当不存在初始事件时,表明初始事件已处理,调用timer.cancel()取消当前延迟计时,调用timer.schedule()重新计时,到达预设的延迟等待时间时,执行结束事件的处理逻辑,即执行该焦点事件列表项n获得焦点预览视频,并将变量hastEvent的值赋值为true。以上即是两个等待时间(2秒)以上时间内有多次焦点事件,这些多次焦点事件为抖动事件不处理,初始事件失去焦点不预览视频,即去抖动控制为抖动发生时只有焦点在切换并不预览视频。
当然,当执行结束事件的处理逻辑后的等待时间内,没有接收到事件,执行计时器任务TimerTask的run方法,调用结束事件,并将变量hasEvent和hasInitEvent赋值为false,将变量initEvent和endEvent赋值为空。
当执行结束事件的处理逻辑后的等待时间内,接收到事件,则调用timer.cancel()取消当前延迟计时,调用timer.schedule()重新计时,到达预设的延迟等待时间时,执行结束事件的处理逻辑,并循环执行该步骤。
本发明的一个或多个实施例带来的有益效果是:
本发明提供了一种事件去抖动的方法及装置,所述方法包括:接收当前事件;在预设的等待时间内,判断是否存在待处理事件;若存在所述待处理事件,判断是否存在待处理的初始事件,若存在所述待处理的初始事件,则执行所述初始事件的处理逻辑;当执行所述初始事件的处理逻辑后,在预设的延迟等待时间内,执行结束事件的处理逻辑;其中,所述初始事件为抖动事件发生时不占用资源的状态事件,所述结束事件为所述抖动事件中最后触发的事件;如此,通过预设一初始事件,在有抖动事件发生时,实现执行初始事件,并过滤掉中间的抖动事件不执行,直接执行结束事件,减少了逻辑处理,有效的降低了处理器及内存的占用,提高了应用的稳定性,进而提高了用户的操作效率。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种事件去抖动的方法,其特征在于,所述方法包括:
接收当前事件;
在预设的等待时间内,判断是否存在待处理事件;
判断是否存在待处理事件,具体包括:
获取变量hasEvent的值;
判断所述hasEvent的值是否为true;
若所述变量hasEvent的值为true,则确定存在所述待处理事件;
若存在所述待处理事件,判断是否存在待处理的初始事件,若存在所述待处理的初始事件,则执行所述初始事件的处理逻辑;
判断是否存在待处理的初始事件,具体包括:
获取变量hasInitEvent的值;
判断所述hasInitEvent的值是否为true;
若所述变量hasInitEvent的值为true,则确定存在所述待处理的初始事件;
当执行所述初始事件的处理逻辑后,到达预设的延迟等待时间时,执行结束事件的处理逻辑;其中,
所述初始事件为抖动事件发生时不占用资源的状态事件,所述结束事件为所述抖动事件中最后触发的事件。
2.如权利要求1所述的方法,其特征在于,在预设的延迟等待时间内,执行结束事件的处理逻辑之前,所述方法还包括:
将所述hasInitEvent的值赋值为false;
调用timer.cancel()取消所述预设的等待时间后的延迟计时;
调用timer.schedule()重新计时所述预设的延迟等待时间。
3.如权利要求1所述的方法,其特征在于,若不存在所述待处理事件时,所述方法还包括:
将所述当前事件标记为结束事件;
调用timer.schedule()重新计时所述预设的等待时间;
到达所述预设的等待时间时,执行所述结束事件的处理逻辑。
4.一种事件去抖动的装置,其特征在于,所述装置包括:
接收单元,用于接收当前事件;
第一判断单元,用于在预设的等待时间内,判断是否存在待处理事件;
所述第一判断单元具体包括:
第一获取子单元,用于获取变量hasEvent的值;
第一判断子单元,用于判断所述hasEvent的值是否为true;
第一确定子单元,用于在所述变量hasEvent的值为true时,确定存在所述待处理事件;
第二判断单元,用于在所述待处理事件时,判断是否存在待处理的初始事件;
所述第二判断单元具体包括:
第二获取子单元,用于获取变量hasInitEvent的值;
第二判断子单元,用于判断所述hasInitEvent的值是否为true;
第二确定子单元,用于在所述变量hasInitEvent的值为true,确定存在所述待处理的初始事件;
第一执行单元,用于存在所述待处理的初始事件时,执行所述初始事件的处理逻辑;
第二执行单元,用于当执行所述初始事件的处理逻辑后,到达预设的延迟等待时间时,执行结束事件的处理逻辑;其中,
所述初始事件为抖动事件发生时不占用资源的状态事件,所述结束事件为所述抖动事件中最后触发的事件。
5.如权利要求4所述的装置,其特征在于,所述装置还包括:
赋值单元,用于在预设的延迟等待时间内,执行结束事件的处理逻辑之前,将所述hasInitEvent的值赋值为false;
第一调用单元,用于调用timer.cancel()取消所述预设的等待时间后的延迟计时;
第二调用单元,用调用timer.schedule()重新计时所述预设的延迟等待时间。
6.如权利要求4所述的装置,其特征在于,若不存在所述待处理事件时,所述装置还包括:
标记单元,用于将所述当前事件标记为结束事件;
第二调用单元,用于调用timer.schedule()重新计时所述预设的等待时间;
第二执行单元,用于在到达所述预设的等待时间时,执行所述结束事件的处理逻辑。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611101725.5A CN108153581B (zh) | 2016-12-05 | 2016-12-05 | 一种事件去抖动的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611101725.5A CN108153581B (zh) | 2016-12-05 | 2016-12-05 | 一种事件去抖动的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108153581A CN108153581A (zh) | 2018-06-12 |
CN108153581B true CN108153581B (zh) | 2022-01-04 |
Family
ID=62470734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611101725.5A Active CN108153581B (zh) | 2016-12-05 | 2016-12-05 | 一种事件去抖动的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108153581B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508552A (zh) * | 2011-10-31 | 2012-06-20 | 深圳市大富科技股份有限公司 | 一种消除按键抖动的方法、装置及键盘 |
CN106126530A (zh) * | 2016-06-15 | 2016-11-16 | 腾讯科技(深圳)有限公司 | 一种消息内容展示方法、系统及终端 |
CN106164839A (zh) * | 2014-02-04 | 2016-11-23 | 触觉实验室股份有限公司 | 通过预生成应用元件的替代的图形表示来对输入做出低等待时间视觉响应以及在图形处理单元上的输入处置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7786901B2 (en) * | 2007-04-03 | 2010-08-31 | Motorola, Inc. | Key press registration in an electronic device with moveable housings |
-
2016
- 2016-12-05 CN CN201611101725.5A patent/CN108153581B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508552A (zh) * | 2011-10-31 | 2012-06-20 | 深圳市大富科技股份有限公司 | 一种消除按键抖动的方法、装置及键盘 |
CN106164839A (zh) * | 2014-02-04 | 2016-11-23 | 触觉实验室股份有限公司 | 通过预生成应用元件的替代的图形表示来对输入做出低等待时间视觉响应以及在图形处理单元上的输入处置 |
CN106126530A (zh) * | 2016-06-15 | 2016-11-16 | 腾讯科技(深圳)有限公司 | 一种消息内容展示方法、系统及终端 |
Non-Patent Citations (1)
Title |
---|
高性能滚动 scroll 及页面渲染优化;匿名;《博客园》;20160517;第1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108153581A (zh) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4047882A1 (en) | Operation control method and device, household electrical appliance, and storage medium | |
CN106933687B (zh) | 定时方法、装置及电子设备 | |
CN106649640B (zh) | 一种即时搜索方法及装置 | |
CN103838593A (zh) | 恢复虚拟机的方法、系统及控制器、服务器、寄宿主机 | |
US20060248042A1 (en) | Method to reduce the latency caused by garbage collection in a java virtual machine | |
CN110933075B (zh) | 服务调用方法、装置、电子设备及存储介质 | |
CN107479981B (zh) | 一种基于异步调用实现同步调用的处理方法及装置 | |
CN104809400A (zh) | 一种进程保护的方法及装置 | |
CN104965727A (zh) | 一种重启服务器的方法及装置 | |
WO2020100581A1 (ja) | 評価装置、評価方法および評価プログラム | |
WO2016179913A1 (zh) | 家庭网关及其工作方法 | |
CN110851413A (zh) | 一种数据同步方法、装置及电子设备和存储介质 | |
CN107577798B (zh) | 一种快照创建方法、装置及计算机可读存储介质 | |
CN113542256B (zh) | 客户端中登录凭证的更新方法、装置、设备及存储介质 | |
CN110399329B (zh) | 一种rdma的数据处理方法及相关装置 | |
CN108153581B (zh) | 一种事件去抖动的方法及装置 | |
CN104702534A (zh) | 一种实现多进程共享端口的数据处理的方法及装置 | |
CN114003396A (zh) | 一种内核软死锁处理方法、装置、设备及存储介质 | |
CN108650310B (zh) | 一种服务发现方法 | |
CN108595195B (zh) | 一种应用程序更新方法、装置、终端和储存介质 | |
CN106550021B (zh) | 推送消息的推送方法及装置 | |
WO2018000686A1 (zh) | 通话建立方法及系统 | |
US20160048156A1 (en) | Automation device and method for reducing jitter | |
WO2015000417A1 (en) | Method, apparatus, application interactive platform, terminal, and system for uploading an image | |
CN116521573A (zh) | 一种自动化测试方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |