[發明專利]一種定時執行代碼的方法及裝置有效
| 申請號: | 201710049839.8 | 申請日: | 2017-01-23 |
| 公開(公告)號: | CN108345494B | 公開(公告)日: | 2022-02-08 |
| 發明(設計)人: | 霍啟圣 | 申請(專利權)人: | 武漢斗魚網絡科技有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 北京眾達德權知識產權代理有限公司 11570 | 代理人: | 劉杰 |
| 地址: | 430000 湖北省武漢市東湖開*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 定時 執行 代碼 方法 裝置 | ||
本發明公開了一種定時執行代碼的方法及裝置,應用于應用開發領域,該方法包括:獲取主線程當前次執行預指定代碼時的實際執行時長;基于實際執行時長對系統消息處理器中的預設固定延時間隔進行修正,以得出用于延遲下一次執行預指定代碼的單次延時間隔,以單次延時間隔進行延時;在以單次延時間隔延時結束時,通過主線程進行下一次執行預指定代碼。通過本發明解決了現有技術中定時執行代碼的延時不精確的技術問題,使得每次執行預指定代碼距離上次執行預指定代碼精確在同一延時間隔,從而實現了精確等延時間隔執行代碼。
技術領域
本發明涉及應用開發領域,尤其涉及一種定時執行代碼的方法及裝置。
背景技術
安卓系統本身擁有一個系統定時器(Timer),這個計時器可以以精確時間間隔執行代碼。但缺點是系統定時器的代碼會在系統的子線程上執行。而在系統子線程上執行的代碼不能操作屏幕頁面的元素。而現有技術中針對主線程上執行的指定代碼,需要通過消息處理器實現,消息處理器是一種可以指定一個延遲時間系統工具,在每次延遲時間結束后,會在系統主線程上執行指定代碼,從而對在主線程上執行的指定代碼進行循環延遲,但是由于每次執行指定代碼所占用時間會有不同,導致主線程循環執行代碼時的時間間隔并不是等間隔,從而定時執行代碼的延時不精確。
發明內容
本發明實施例通過提供一種定時執行代碼的方法及裝置,解決了現有技術中定時執行代碼的延時不精確的技術問題。
第一方面,本發明實施例提供了一種定時執行代碼的方法,包括:
獲取主線程當前次執行預指定代碼時的實際執行時長;
基于所述實際執行時長對系統消息處理器中的預設固定延時間隔進行修正,以得出用于延遲下一次執行所述預指定代碼的單次延時間隔,其中,所述系統消息處理器為針對所述主線程創建;
以所述單次延時間隔進行延時;
在以所述單次延時間隔延時結束時,通過所述主線程進行下一次執行所述預指定代碼。
優選的,在所述獲取主線程當前次執行預指定代碼時的實際執行時長之前,所述方法還包括:
判斷所述系統消息處理器是否處于運行狀態;
如果所述系統消息處理器處于所述運行狀態,執行所述步驟:獲取主線程當前次執行預指定代碼時的實際執行時長。
優選的,所述判斷所述系統消息處理器是否處于運行狀態,包括:
判斷針對所述系統消息處理器設置的運行時長是否結束,和/或是否已經檢測到用戶的用于停止所述系統消息處理的結束運行操作。
優選的,所述獲取主線程當前次執行預指定代碼時的實際執行時長,包括:
記錄所述主線程當前次開始執行所述預指定代碼時的系統時間戳為當前次執行所述預指定代碼的起始時刻;
記錄所述主線程當前次執行所述預指定代碼結束時的系統時間戳為當前次執行所述預指定代碼的結束時刻;
根據所述結束時刻與所述起始時刻計算出所述實際執行時長。
優選的,所述基于所述實際執行時長對系統消息處理器中的預設固定延時間隔進行修正,以得出用于延遲下一次執行所述預指定代碼的單次延時間隔,包括:
判斷所述實際執行時長是否小于或等于所述預設固定延時間隔;
如果判斷出所述實際執行時長小于或等于所述預設固定延時間隔,將所述預設固定延時間隔與所述實際執行時長之差確定為所述單次延時間隔。
優選的,所述基于所述實際執行時長對系統消息處理器中的預設固定延時間隔進行修正,以得出用于延遲下一次執行所述預指定代碼的單次延時間隔,還包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于武漢斗魚網絡科技有限公司,未經武漢斗魚網絡科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710049839.8/2.html,轉載請聲明來源鉆瓜專利網。





