本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種定時任務(wù)的處理方法及裝置。
背景技術(shù):
終端內(nèi)的定時器是一個多任務(wù)定時提醒軟件,主要用于在設(shè)定的時間到達后能夠執(zhí)行相應(yīng)的任務(wù),比如播放聲音、關(guān)機、待機、撥號、斷開連接、關(guān)閉顯示器等操作,是終端中最常用的模塊之一。
目前,某些非開源操作系統(tǒng)常用的定時器是通過將創(chuàng)建的定時任務(wù)添加到當(dāng)前線程的事件處理循環(huán)runloop中來實現(xiàn)的,也就是在當(dāng)前線程的事件處理循環(huán)中加入一個時間源,每次該事件處理循環(huán)循環(huán)時會檢查是否已到達指定時間,若到達,則執(zhí)行相應(yīng)的邏輯事件。通常,這些非開源操作系統(tǒng)下邏輯事件的準(zhǔn)時觸發(fā)必須保證:定時任務(wù)所在的事件處理循環(huán)當(dāng)前處于活躍狀態(tài),且沒有在執(zhí)行連續(xù)任務(wù)。但是,由于子線程的事件處理循環(huán)是默認關(guān)閉的,并且難以避免會存在一些連續(xù)任務(wù),比如連續(xù)運算的執(zhí)行,從而導(dǎo)致該定時方案容易產(chǎn)生邏輯事件觸發(fā)延遲或者不觸發(fā)的情況,觸發(fā)準(zhǔn)確率低。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種定時任務(wù)的處理方法及裝置,以解決現(xiàn)有技術(shù)中的定時器容易發(fā)生觸發(fā)延遲或不觸發(fā),觸發(fā)準(zhǔn)確率低的技術(shù)問題。
為解決上述技術(shù)問題,本發(fā)明實施例提供以下技術(shù)方案:
一種定時任務(wù)的處理方法,其包括:
獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,所述任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略;
根據(jù)所述任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建所述定時任務(wù),并開始計時;
根據(jù)計時時長和所述時間策略調(diào)用所述線程標(biāo)識對應(yīng)的線程;
利用所述線程執(zhí)行所述任務(wù)內(nèi)容。
為解決上述技術(shù)問題,本發(fā)明實施例還提供以下技術(shù)方案:
一種定時任務(wù)的處理裝置,其包括:
獲取模塊,用于獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,所述任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略;
創(chuàng)建模塊,用于根據(jù)所述任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建所述定時任務(wù),并開始計時;
調(diào)用模塊,用于根據(jù)計時時長和所述時間策略調(diào)用所述線程標(biāo)識對應(yīng)的線程;
第一執(zhí)行模塊,用于利用所述線程執(zhí)行所述任務(wù)內(nèi)容。
本發(fā)明所述的定時任務(wù)的處理方法及裝置,通過獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略,接著,根據(jù)該任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建該定時任務(wù),并開始計時,之后,根據(jù)計時時長和該時間策略調(diào)用該線程標(biāo)識對應(yīng)的線程,并利用該線程執(zhí)行該任務(wù)內(nèi)容,從而無需定時器所在的線程的事件處理循環(huán)處于活躍狀態(tài)即可觸發(fā)定時任務(wù),確保定時任務(wù)的準(zhǔn)時觸發(fā),準(zhǔn)確率高。
附圖說明
下面結(jié)合附圖,通過對本發(fā)明的具體實施方式詳細描述,將使本發(fā)明的技術(shù)方案及其它有益效果顯而易見。
圖1a是本發(fā)明實施例提供的定時任務(wù)的處理系統(tǒng)的場景示意圖;
圖1b為本發(fā)明實施例提供的定時任務(wù)的處理方法的流程示意圖;
圖2為本發(fā)明實施例提供的定時任務(wù)的處理方法的流程示意圖;
圖3a為本發(fā)明實施例提供的定時任務(wù)的處理裝置的結(jié)構(gòu)示意圖;
圖3b為本發(fā)明實施例提供的定時任務(wù)的處理裝置的另一結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例提供的網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例提供一種定時任務(wù)的處理方法、裝置及系統(tǒng)。
請參閱圖1a,該定時任務(wù)的處理系統(tǒng)可以包括本發(fā)明實施例所提供的任一種定時任務(wù)的處理裝置,該定時任務(wù)的處理裝置具體可以集成在終端或服務(wù)器等網(wǎng)絡(luò)設(shè)備中。
其中,網(wǎng)絡(luò)設(shè)備可以獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略,接著,根據(jù)該任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建該定時任務(wù),并開始計時,之后,根據(jù)計時時長和該時間策略調(diào)用該線程標(biāo)識對應(yīng)的線程,并利用該線程執(zhí)行該任務(wù)內(nèi)容。
其中,該任務(wù)標(biāo)識可以包括任務(wù)名稱,其可以表現(xiàn)為字符串的形式,該任務(wù)標(biāo)識可以根據(jù)任務(wù)內(nèi)容而定,每一個任務(wù)有一個唯一的任務(wù)標(biāo)識。該線程標(biāo)識可以是線程的地址,該線程是程序執(zhí)行流的最小單元。該時間策略可以根據(jù)實際需求而定,其可以包括是否循環(huán)、第一次觸發(fā)時長、循環(huán)時間間隔、循環(huán)終止時間等信息。該任務(wù)集合主要用于存儲網(wǎng)絡(luò)設(shè)備中已創(chuàng)建的所有定時任務(wù),其可以根據(jù)實際需求而定,比如可以是用戶指定的文件夾,或者是網(wǎng)絡(luò)設(shè)備出廠時廠家已經(jīng)設(shè)置好的指定存儲區(qū)(譬如任務(wù)分發(fā)庫(Grand Central Dispatch,GCD))。當(dāng)用戶需要設(shè)定某個定時任務(wù)時,比如在終端上設(shè)定一個工作日早上八點的鬧鐘,此時,終端可以根據(jù)設(shè)定內(nèi)容給該鬧鐘分配執(zhí)行的線程和鬧鐘標(biāo)識,并根據(jù)鬧鐘標(biāo)識和鬧鐘信息在GCD中創(chuàng)建并啟動該定時任務(wù),這樣,在每周一至周五早上八點的時候,分配的線程會自動執(zhí)行鈴聲響起的操作。
以下將分別進行詳細說明。需說明的是,以下實施例的序號不作為實施例優(yōu)先順序的限定。
第一實施例
本實施例將從定時任務(wù)的處理裝置的角度進行描述,該定時任務(wù)的處理裝置可以集成在終端或服務(wù)器等網(wǎng)絡(luò)設(shè)備中。
請參閱圖1b,圖1b具體描述了本發(fā)明第一實施例提供的定時任務(wù)的處理方法,其可以包括:
S101、獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略。
本實施例中,該任務(wù)信息和任務(wù)標(biāo)識可以是客戶端發(fā)送的,也可以是該網(wǎng)絡(luò)設(shè)備根據(jù)用戶的設(shè)定操作自行生成的,其中,該任務(wù)標(biāo)識可以包括任務(wù)名稱,其可以表現(xiàn)為字符串的形式,該任務(wù)標(biāo)識可以根據(jù)任務(wù)內(nèi)容而定,每一個任務(wù)有一個唯一的任務(wù)標(biāo)識。該線程標(biāo)識可以是線程的地址,該線程是程序執(zhí)行流的最小單元。該時間策略可以根據(jù)實際需求而定,其可以是用戶根據(jù)喜好自行設(shè)定的,也可以是系統(tǒng)默認設(shè)置的,該時間策略可以包括是否循環(huán)、第一次觸發(fā)時長、循環(huán)時間間隔、循環(huán)終止時間等信息。
S102、根據(jù)該任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建該定時任務(wù),并開始計時。
本實施例中,該任務(wù)集合主要用于存儲網(wǎng)絡(luò)設(shè)備中已創(chuàng)建的所有定時任務(wù),其可以根據(jù)實際需求而定,比如可以是用戶指定的文件夾,或者是網(wǎng)絡(luò)設(shè)備出廠時廠家已經(jīng)設(shè)置好的指定存儲區(qū)(譬如任務(wù)分發(fā)庫(Grand Central Dispatch,GCD))。
需要說明的是,該任務(wù)集合是一個單例對象,在創(chuàng)建該定時任務(wù)的過程中,若任務(wù)集合中已存在具有同一任務(wù)標(biāo)識的已創(chuàng)建任務(wù),為避免重復(fù)創(chuàng)建占用內(nèi)存,甚至導(dǎo)致后續(xù)調(diào)用混亂,只需將該已創(chuàng)建任務(wù)更新成定時任務(wù)即可完成創(chuàng)建操作,也即,上述步驟S102具體可以包括:
1-1、判斷已存儲的任務(wù)集合中是否存在與該任務(wù)標(biāo)識相同的已創(chuàng)建任務(wù),若存在,則執(zhí)行下述步驟1-2,若不存在,則執(zhí)行下述步驟1-3。
本實施例中,由于在任務(wù)集合中每個任務(wù)標(biāo)識只能對應(yīng)一個定時任務(wù),所以可以通過任務(wù)標(biāo)識來判斷是要進行更新操作還是創(chuàng)建操作。
1-2、根據(jù)該時間策略對該已創(chuàng)建任務(wù)進行更新。
例如,上述步驟1-2具體可以包括:
獲取該已創(chuàng)建任務(wù)的已計時時長、當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則;
根據(jù)該時間策略對當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則進行更新,并將該已計時時長歸零。
本實施例中,該循環(huán)規(guī)則可以包括是否循環(huán)、循環(huán)時間間隔以及循環(huán)終止時間等信息,當(dāng)存在與該任務(wù)標(biāo)識相同的已創(chuàng)建任務(wù)時,需要將該已創(chuàng)建任務(wù)的啟動時間進行更新,以實現(xiàn)該定時任務(wù)的創(chuàng)建,也即可以將當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則更新成與該定時任務(wù)的時間策略所包含的一致,并重新開始計時。
1-3、根據(jù)該任務(wù)信息和任務(wù)標(biāo)識在該任務(wù)集合中創(chuàng)建該定時任務(wù)。
例如,上述步驟1-3具體可以包括:
建立該任務(wù)標(biāo)識、線程標(biāo)識和任務(wù)內(nèi)容的關(guān)聯(lián)關(guān)系;
根據(jù)該時間策略獲取第一次觸發(fā)時長和循環(huán)規(guī)則;
將該關(guān)聯(lián)關(guān)系、第一次觸發(fā)時長和循環(huán)規(guī)則存儲在任務(wù)集合中。
本實施例中,當(dāng)不存在與該定時任務(wù)的任務(wù)標(biāo)識相同的已創(chuàng)建任務(wù)時,需要將任務(wù)信息和任務(wù)標(biāo)識關(guān)聯(lián)后存儲在任務(wù)集合中,以創(chuàng)建該定時任務(wù)。
S103、根據(jù)計時時長和該時間策略調(diào)用該線程標(biāo)識對應(yīng)的線程。
例如,上述步驟S103具體可以包括:
根據(jù)該時間策略判斷當(dāng)前計時時長是否滿足預(yù)設(shè)條件;
若滿足預(yù)設(shè)條件,則調(diào)用該線程標(biāo)識對應(yīng)的線程;
若不滿足預(yù)設(shè)條件,則檢測是否生成攜帶有該任務(wù)標(biāo)識的任務(wù)取消指令;若生成攜帶有該任務(wù)標(biāo)識的任務(wù)取消指令,則從該任務(wù)集合中刪除該定時任務(wù)。
本實施例中,該預(yù)設(shè)條件可以根據(jù)用戶的實際需求而定,比如可以根據(jù)用戶設(shè)定的觸發(fā)時長而定。具體的,在開始計時之后,網(wǎng)絡(luò)設(shè)備需要時刻檢測當(dāng)前計時時長是否滿足預(yù)設(shè)條件,若滿足,則可以執(zhí)行指定的任務(wù)內(nèi)容,若不滿足,則可以繼續(xù)計時,重新判斷是否滿足預(yù)設(shè)條件。
當(dāng)然,在調(diào)用該線程標(biāo)識對應(yīng)的線程之前,也即判斷出當(dāng)前計時時長不滿足預(yù)設(shè)條件時,若用戶取消了該定時任務(wù),或者該定時任務(wù)的執(zhí)行對象(比如應(yīng)用程序)被刪除時,可以生成該任務(wù)取消指令,以進行相應(yīng)的刪除操作,從而避免任務(wù)集合中存在無效的定時任務(wù)。其中該刪除操作可以包括刪除與該定時任務(wù)相關(guān)的一切信息,比如已存儲的關(guān)聯(lián)關(guān)系、第一次觸發(fā)時長、下一次觸發(fā)時長以及循環(huán)規(guī)則等信息,或者刪除與更新后的已創(chuàng)建任務(wù)相關(guān)的一切信息,等等。
例如,上述步驟“根據(jù)該時間策略判斷當(dāng)前計時時長是否滿足預(yù)設(shè)條件”具體可以包括:
判斷當(dāng)前計時時長是否到達預(yù)設(shè)時長;
若滿足,則判斷當(dāng)前計時時長滿足預(yù)設(shè)條件;
若不滿足,則判斷當(dāng)前計時時長不滿足預(yù)設(shè)條件。
本實施例中,該預(yù)設(shè)時長可以是時間策略中的第一次觸發(fā)時長,或者是根據(jù)循環(huán)規(guī)則計算的下一次觸發(fā)時長(也即最近一次的觸發(fā)時長),具體需要根據(jù)實際應(yīng)用過程而定。
S104、利用該線程執(zhí)行該任務(wù)內(nèi)容。
本實施例中,若該線程正在執(zhí)行其他操作,比如播放視頻,網(wǎng)絡(luò)設(shè)備會暫停該視頻的播放,直到完成了該任務(wù)內(nèi)容的執(zhí)行操作才會繼續(xù)播放該視頻,并且,無論該線程所在的事件處理循環(huán)runloop當(dāng)前是否處于活躍狀態(tài),都不影響該線程的執(zhí)行操作,從而能最大程度的確保定時任務(wù)的準(zhǔn)時觸發(fā),避免產(chǎn)生延時現(xiàn)象。
需要說明的是,對于非循環(huán)任務(wù)(也即一次性任務(wù)),在執(zhí)行完該任務(wù)內(nèi)容之后,為節(jié)省內(nèi)存,可以刪除該定時任務(wù),但對于循環(huán)任務(wù),在執(zhí)行完該任務(wù)內(nèi)容之后,還需要繼續(xù)下一次循環(huán)操作,也即,在上述步驟S104之后,該定時任務(wù)的處理方法還可以包括:
根據(jù)該時間策略判斷該定時任務(wù)是否為循環(huán)任務(wù);
若該定時任務(wù)是循環(huán)任務(wù),則根據(jù)該時間策略計算下一次觸發(fā)時長,將該計時時長歸零,并返回執(zhí)行開始計時的操作;
若該定時任務(wù)不是循環(huán)任務(wù),則刪除該定時任務(wù)。
本實施例中,可以根據(jù)時間策略中的循環(huán)規(guī)則判斷是否為循環(huán)任務(wù),且若為循環(huán)任務(wù),則可以計算下一次觸發(fā)時長(比如可以為循環(huán)時間間隔),并重新開始計時,若為非循環(huán)任務(wù),則可以刪除任務(wù)集合中該定時任務(wù)的相關(guān)信息,比如任務(wù)標(biāo)識和任務(wù)信息。
由上述可知,本實施例提供的定時任務(wù)的處理方法,通過獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略,接著,根據(jù)該任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建該定時任務(wù),并開始計時,之后,根據(jù)計時時長和該時間策略調(diào)用該線程標(biāo)識對應(yīng)的線程,并利用該線程執(zhí)行該任務(wù)內(nèi)容,從而無需定時器所在的線程的事件處理循環(huán)處于活躍狀態(tài)即可觸發(fā)定時任務(wù),確保定時任務(wù)的準(zhǔn)時觸發(fā),準(zhǔn)確率高。
第二實施例
根據(jù)實施例一所描述的方法,以下將舉例作進一步詳細說明。
在本實施例中,將以該定時任務(wù)的處理裝置集成在終端中為例進行詳細說明。
如圖2所示,一種定時任務(wù)的處理方法,具體流程可以如下:
S201、終端獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略。
譬如,當(dāng)用戶設(shè)定了某個鬧鐘時,比如每天早上八點鬧鈴響起,終端可以根據(jù)該鬧鐘的內(nèi)容生成任務(wù)標(biāo)識,并給響鈴操作分配執(zhí)行的線程。
S202、終端判斷已存儲的任務(wù)集合中是否存在與該任務(wù)標(biāo)識相同的已創(chuàng)建任務(wù),若存在,則執(zhí)行下述步驟S203,若不存在,則執(zhí)行下述步驟S204-S205。
譬如,該任務(wù)集合可以存儲終端中已設(shè)置好的所有定時任務(wù),且每個定時任務(wù)都可以通過其唯一的任務(wù)標(biāo)識查找得到,該任務(wù)集合可以是用戶指定的文件夾,或者是終端出廠時廠家已經(jīng)設(shè)置好的任務(wù)分發(fā)庫GCD。
S203、終端獲取該已創(chuàng)建任務(wù)的已計時時長、當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則,并根據(jù)該時間策略對當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則進行更新,同時將該已計時時長歸零。
譬如,當(dāng)任務(wù)集合中的某個已創(chuàng)建任務(wù)具有同樣的任務(wù)標(biāo)識時,說明該已創(chuàng)建任務(wù)和該定時任務(wù)的任務(wù)內(nèi)容一樣,此時,為避免重復(fù)創(chuàng)建而消耗內(nèi)存,甚至導(dǎo)致后續(xù)調(diào)用混亂,終端只需將該已創(chuàng)建任務(wù)的啟動時間進行更新即可。
S204、終端建立該任務(wù)標(biāo)識、線程標(biāo)識和任務(wù)內(nèi)容的關(guān)聯(lián)關(guān)系,并根據(jù)該時間策略獲取第一次觸發(fā)時長和循環(huán)規(guī)則。
譬如,當(dāng)需要在任務(wù)集合中創(chuàng)建該定時任務(wù)時,終端可以從任務(wù)信息中獲取該定時任務(wù)的第一次觸發(fā)時長、是否循環(huán)、循環(huán)時間間隔和循環(huán)終止時間等信息,同時將任務(wù)標(biāo)識和任務(wù)信息之間建立關(guān)聯(lián),以便后續(xù)的查找調(diào)用操作。
S205、終端將該關(guān)聯(lián)關(guān)系、第一次觸發(fā)時長和循環(huán)規(guī)則存儲在任務(wù)集合中。
譬如,終端可以將該關(guān)聯(lián)關(guān)系、第一次觸發(fā)時長和循環(huán)規(guī)則存儲在任務(wù)分發(fā)庫GCD的某個區(qū)域。
S206、終端開始計時。
譬如,終端可以開啟計時功能,該計時方式可以是從零開始的正常計時,也可以是從指定時長(比如第一次觸發(fā)時長或者下一次觸發(fā)時長)開始的倒計時。
S207、終端判斷當(dāng)前計時時長是否到達預(yù)設(shè)時長,若是,則可以執(zhí)行下述步驟S208-S209,若否,則可以執(zhí)行下述步驟S210。
譬如,若當(dāng)前計時時長是第一次計時得到的時長時,該預(yù)設(shè)時長可以為第一次觸發(fā)時長,若當(dāng)前計時時長不是第一次計時得到的時長時,比如是第二次或者第N次計時得到的,則該預(yù)設(shè)時長可以為根據(jù)循環(huán)規(guī)則計算的下一次觸發(fā)時長(也即最近一次的觸發(fā)時長)。
S208、終端調(diào)用該線程標(biāo)識對應(yīng)的線程執(zhí)行該任務(wù)內(nèi)容。
譬如,若當(dāng)前計時時長到達預(yù)設(shè)時長,說明滿足定時任務(wù)的觸發(fā)條件,此時,可以調(diào)用指定的線程來執(zhí)行該定時任務(wù)設(shè)定的任務(wù)內(nèi)容,比如鬧鐘的鈴聲響起。需要說明的是,若該線程正在執(zhí)行其他操作,比如播放視頻,終端會暫停該視頻的播放,直到完成了該任務(wù)內(nèi)容的執(zhí)行操作才會繼續(xù)播放該視頻,并且,無論該線程所在的事件處理循環(huán)runloop當(dāng)前是否處于活躍狀態(tài),都不影響該線程的調(diào)用,從而能最大程度的確保定時任務(wù)的準(zhǔn)時觸發(fā),避免產(chǎn)生延時現(xiàn)象。
S209、終端根據(jù)該時間策略判斷該定時任務(wù)是否為循環(huán)任務(wù),若是,則可以執(zhí)行下述步驟S211,若否,則可以執(zhí)行下述步驟S212。
譬如,終端可以根據(jù)時間策略中的循環(huán)規(guī)則判斷是否為循環(huán)任務(wù)。
S210、終端檢測是否生成攜帶有該任務(wù)標(biāo)識的任務(wù)取消指令,若是,則可以執(zhí)行下述步驟S212,若否,則終端可以繼續(xù)計時,并返回執(zhí)行上述步驟S207。
譬如,若當(dāng)前計時時長沒有到達預(yù)設(shè)時長,說明不滿足定時任務(wù)的觸發(fā)條件,此時,若用戶取消了該定時任務(wù),或者該定時任務(wù)的執(zhí)行對象(比如應(yīng)用程序)被刪除時,終端可以生成該任務(wù)取消指令。
S211、終端根據(jù)該時間策略計算下一次觸發(fā)時長,將當(dāng)前計時時長歸零,并返回執(zhí)行上述步驟S206。
譬如,終端可以將該定時任務(wù)循環(huán)規(guī)則中的循環(huán)時間間隔作為下一次觸發(fā)時長,并將當(dāng)前計時時長初始化。
S212、終端從該任務(wù)集合中刪除該定時任務(wù)。
譬如,終端可以將任務(wù)集合中該定時任務(wù)的相關(guān)信息,比如任務(wù)標(biāo)識和任務(wù)信息進行刪除。
由上述可知,本實施例提供的定時任務(wù)的處理方法,其中終端可以獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略,并判斷已存儲的任務(wù)集合中是否存在與該任務(wù)標(biāo)識相同的已創(chuàng)建任務(wù),若存在,則獲取該已創(chuàng)建任務(wù)的已計時時長、當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則,并根據(jù)該時間策略對當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則進行更新,同時將該已計時時長歸零,若不存在,則建立該任務(wù)標(biāo)識、線程標(biāo)識和任務(wù)內(nèi)容的關(guān)聯(lián)關(guān)系,并根據(jù)該時間策略獲取第一次觸發(fā)時長和循環(huán)規(guī)則,之后將該關(guān)聯(lián)關(guān)系、第一次觸發(fā)時長和循環(huán)規(guī)則存儲在任務(wù)集合中,從而在創(chuàng)建該定時任務(wù)的過程中,能避免重復(fù)創(chuàng)建同一任務(wù),節(jié)省內(nèi)存資源。當(dāng)創(chuàng)建完成時,終端可以開始計時,之后時刻判斷當(dāng)前計時時長是否到達預(yù)設(shè)時長,若滿足,則調(diào)用該線程標(biāo)識對應(yīng)的線程執(zhí)行該任務(wù)內(nèi)容,并根據(jù)該時間策略判斷該定時任務(wù)是否為循環(huán)任務(wù),若是循環(huán)任務(wù),則根據(jù)該時間策略計算下一次觸發(fā)時長,將當(dāng)前計時時長歸零,并重新開始計時,若不是循環(huán)任務(wù),則從該任務(wù)集合中刪除該定時任務(wù),若不滿足,則檢測是否生成攜帶有該任務(wù)標(biāo)識的任務(wù)取消指令,若生成該任務(wù)取消指令,則該任務(wù)集合中刪除該定時任務(wù),若未生成該任務(wù)取消指令,則繼續(xù)計時,并返回執(zhí)行當(dāng)前計時時長是否到達預(yù)設(shè)時長的操作,從而無需定時器所在的線程的事件處理循環(huán)處于活躍狀態(tài)即可觸發(fā)定時任務(wù),確保定時任務(wù)的準(zhǔn)時觸發(fā),準(zhǔn)確率高。
第三實施例
在實施例一和實施例二所述方法的基礎(chǔ)上,本實施例將從定時任務(wù)的處理裝置的角度進一步進行描述,請參閱圖3a,圖3a具體描述了本發(fā)明第三實施例提供的定時任務(wù)的處理裝置,其可以包括:獲取模塊10、創(chuàng)建模塊20、調(diào)用模塊30和第一執(zhí)行模塊40,其中:
(1)獲取模塊10
獲取模塊10,用于獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略。
本實施例中,該任務(wù)信息和任務(wù)標(biāo)識可以是客戶端發(fā)送的,也可以是該網(wǎng)絡(luò)設(shè)備根據(jù)用戶的設(shè)定操作自行生成的,其中,該任務(wù)標(biāo)識可以包括任務(wù)名稱,其可以表現(xiàn)為字符串的形式,該任務(wù)標(biāo)識可以根據(jù)任務(wù)內(nèi)容而定,每一個任務(wù)有一個唯一的任務(wù)標(biāo)識。該線程標(biāo)識可以是線程的地址,該線程是程序執(zhí)行流的最小單元。該時間策略可以根據(jù)實際需求而定,其可以是用戶根據(jù)喜好自行設(shè)定的,也可以是系統(tǒng)默認設(shè)置的,該時間策略可以包括是否循環(huán),第一次觸發(fā)時長,循環(huán)時間間隔等信息。
(2)創(chuàng)建模塊20
創(chuàng)建模塊20,用于根據(jù)該任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建該定時任務(wù),并開始計時。
本實施例中,該任務(wù)集合主要用于存儲網(wǎng)絡(luò)設(shè)備中已創(chuàng)建的所有定時任務(wù),其可以根據(jù)實際需求而定,比如可以是用戶指定的文件夾,或者是網(wǎng)絡(luò)設(shè)備出廠時廠家已經(jīng)設(shè)置好的指定存儲區(qū)(譬如任務(wù)分發(fā)庫(Grand Central Dispatch,GCD))。
需要說明的是,該任務(wù)集合是一個單例對象,在創(chuàng)建該定時任務(wù)的過程中,若任務(wù)集合中已存在具有同一任務(wù)標(biāo)識的已創(chuàng)建任務(wù),為避免重復(fù)創(chuàng)建占用內(nèi)存,甚至導(dǎo)致后續(xù)調(diào)用混亂,只需將該已創(chuàng)建任務(wù)更新成定時任務(wù)即可完成創(chuàng)建操作,也即,請參閱圖3b,該創(chuàng)建模塊20具體可以包括判斷子模塊21、更新子模塊22和創(chuàng)建子模塊23,其中:
判斷子模塊21,用于判斷已存儲的任務(wù)集合中是否存在與該任務(wù)標(biāo)識相同的已創(chuàng)建任務(wù)。
本實施例中,由于在任務(wù)集合中每個任務(wù)標(biāo)識只能對應(yīng)一個定時任務(wù),所以判斷子模塊21可以通過任務(wù)標(biāo)識來判斷,從而決定要進行更新操作還是創(chuàng)建操作。
更新子模塊22,用于若存在,則根據(jù)該時間策略對該已創(chuàng)建任務(wù)進行更新。
例如,該更新子模塊22具體可以用于:
獲取該已創(chuàng)建任務(wù)的已計時時長、當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則;
根據(jù)該時間策略對當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則進行更新,并將該已計時時長歸零。
本實施例中,該循環(huán)規(guī)則可以包括是否循環(huán)、循環(huán)時間間隔以及循環(huán)終止時間等信息,當(dāng)存在與該任務(wù)標(biāo)識相同的已創(chuàng)建任務(wù)時,更新子模塊22需要將該已創(chuàng)建任務(wù)的啟動時間進行更新,以實現(xiàn)該定時任務(wù)的創(chuàng)建,也即可以將當(dāng)前剩余觸發(fā)時長和循環(huán)規(guī)則更新成與該定時任務(wù)的時間策略所包含的一致,并重新開始計時。
創(chuàng)建子模塊23,用于若不存在,則根據(jù)該任務(wù)信息和任務(wù)標(biāo)識在該任務(wù)集合中創(chuàng)建該定時任務(wù)。
例如,該創(chuàng)建子模塊23具體可以用于:
建立該任務(wù)標(biāo)識、線程標(biāo)識和任務(wù)內(nèi)容的關(guān)聯(lián)關(guān)系;
根據(jù)該時間策略獲取第一次觸發(fā)時長和循環(huán)規(guī)則;
將該關(guān)聯(lián)關(guān)系、第一次觸發(fā)時長和循環(huán)規(guī)則存儲在任務(wù)集合中。
本實施例中,當(dāng)不存在與該定時任務(wù)的任務(wù)標(biāo)識相同的已創(chuàng)建任務(wù)時,創(chuàng)建子模塊23需要將任務(wù)信息和任務(wù)標(biāo)識關(guān)聯(lián)后存儲在任務(wù)集合中,以創(chuàng)建該定時任務(wù)。
(3)調(diào)用模塊30
調(diào)用模塊30,用于根據(jù)計時時長和該時間策略調(diào)用該線程標(biāo)識對應(yīng)的線程。
例如,該調(diào)用模塊30具體可以用于:
根據(jù)該時間策略判斷當(dāng)前計時時長是否滿足預(yù)設(shè)條件;
若滿足預(yù)設(shè)條件,則調(diào)用該線程標(biāo)識對應(yīng)的線程;
若不滿足預(yù)設(shè)條件,則檢測是否生成攜帶有該任務(wù)標(biāo)識的任務(wù)取消指令;若生成攜帶有該任務(wù)標(biāo)識的任務(wù)取消指令,則從該任務(wù)集合中刪除該定時任務(wù)。
本實施例中,該預(yù)設(shè)條件可以根據(jù)用戶的實際需求而定,比如可以根據(jù)用戶設(shè)定的觸發(fā)時長而定。具體的,在開始計時之后,網(wǎng)絡(luò)設(shè)備需要時刻檢測當(dāng)前計時時長是否滿足預(yù)設(shè)條件,若滿足,則可以執(zhí)行指定的任務(wù)內(nèi)容,若不滿足,則可以繼續(xù)計時,重新判斷是否滿足預(yù)設(shè)條件。
當(dāng)然,在調(diào)用該線程標(biāo)識對應(yīng)的線程之前,也即判斷出當(dāng)前計時時長不滿足預(yù)設(shè)條件時,若用戶取消了該定時任務(wù),或者該定時任務(wù)的執(zhí)行對象(比如應(yīng)用程序)被刪除時,可以生成該任務(wù)取消指令,以進行相應(yīng)的刪除操作,從而避免任務(wù)集合中存在無效的定時任務(wù)。其中該刪除操作可以包括刪除與該定時任務(wù)相關(guān)的一切信息,比如已存儲的關(guān)聯(lián)關(guān)系、第一次觸發(fā)時長、下一次觸發(fā)時長以及循環(huán)規(guī)則等信息,或者刪除與更新后的已創(chuàng)建任務(wù)相關(guān)的一切信息,等等。
本實施例中,該調(diào)用模塊30具體可以用于:
判斷當(dāng)前計時時長是否到達預(yù)設(shè)時長;
若滿足,則判斷當(dāng)前計時時長滿足預(yù)設(shè)條件;
若不滿足,則判斷當(dāng)前計時時長不滿足預(yù)設(shè)條件。
本實施例中,該預(yù)設(shè)時長可以是時間策略中的第一次觸發(fā)時長,或者是根據(jù)循環(huán)規(guī)則計算的下一次觸發(fā)時長(也即最近一次的觸發(fā)時長),具體需要根據(jù)實際應(yīng)用過程而定。
(4)第一執(zhí)行模塊40
第一執(zhí)行模塊40,用于利用該線程執(zhí)行該任務(wù)內(nèi)容。
本實施例中,若該線程正在執(zhí)行其他操作,比如播放視頻,網(wǎng)絡(luò)設(shè)備會暫停該視頻的播放,直到完成了該任務(wù)內(nèi)容的執(zhí)行操作才會繼續(xù)播放該視頻,并且,無論該線程所在的事件處理循環(huán)runloop當(dāng)前是否處于活躍狀態(tài),都不影響該線程的執(zhí)行操作,從而能最大程度的確保定時任務(wù)的準(zhǔn)時觸發(fā),避免產(chǎn)生延時現(xiàn)象。
需要說明的是,對于非循環(huán)任務(wù)(也即一次性任務(wù)),在第一執(zhí)行模塊40執(zhí)行完該任務(wù)內(nèi)容之后,為節(jié)省內(nèi)存,網(wǎng)絡(luò)設(shè)備可以刪除該定時任務(wù),但對于循環(huán)任務(wù),第一執(zhí)行模塊40在執(zhí)行完該任務(wù)內(nèi)容之后,還需要繼續(xù)下一次循環(huán)操作,也即,該定時任務(wù)的處理裝置還可以包括第二執(zhí)行模塊50,用于:
在該第一執(zhí)行模塊40利用該線程執(zhí)行該任務(wù)內(nèi)容之后,根據(jù)該時間策略判斷該定時任務(wù)是否為循環(huán)任務(wù);
若該定時任務(wù)是循環(huán)任務(wù),則根據(jù)該時間策略計算下一次觸發(fā)時長,將該計時時長歸零,并返回執(zhí)行該開始計時的操作;
若該定時任務(wù)不是循環(huán)任務(wù),則從該任務(wù)集合中刪除該定時任務(wù)。
本實施例中,第二執(zhí)行模塊50可以根據(jù)時間策略中的循環(huán)規(guī)則判斷是否為循環(huán)任務(wù),且若為循環(huán)任務(wù),則可以計算下一次觸發(fā)時長(比如可以為循環(huán)時間間隔),并重新開始計時,若為非循環(huán)任務(wù),則可以刪除任務(wù)集合中該定時任務(wù)的相關(guān)信息,比如任務(wù)標(biāo)識和任務(wù)信息。
具體實施時,以上各個單元可以作為獨立的實體來實現(xiàn),也可以進行任意組合,作為同一或若干個實體來實現(xiàn),以上各個單元的具體實施可參見前面的方法實施例,在此不再贅述。
由上述可知,本實施例提供的定時任務(wù)的處理裝置,通過獲取模塊10獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略,接著,創(chuàng)建模塊20根據(jù)該任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建該定時任務(wù),并開始計時,調(diào)用模塊30根據(jù)計時時長和該時間策略調(diào)用該線程標(biāo)識對應(yīng)的線程,第一執(zhí)行模塊40利用該線程執(zhí)行該任務(wù)內(nèi)容,從而無需定時器所在的線程的事件處理循環(huán)處于活躍狀態(tài)即可觸發(fā)定時任務(wù),確保定時任務(wù)的準(zhǔn)時觸發(fā),準(zhǔn)確率高。
第四實施例
相應(yīng)的,本發(fā)明實施例還提供一種定時任務(wù)的處理系統(tǒng),包括本發(fā)明實施例所提供的任一種定時任務(wù)的處理裝置,該定時任務(wù)的處理裝置具體可參見實施例三。
其中,該定時任務(wù)的處理裝置具體可以集成在終端或服務(wù)器等網(wǎng)絡(luò)設(shè)備中,例如,可以如下:
網(wǎng)絡(luò)設(shè)備,用于獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略;根據(jù)該任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建該定時任務(wù),并開始計時;根據(jù)計時時長和該時間策略調(diào)用該線程標(biāo)識對應(yīng)的線程;利用該線程執(zhí)行該任務(wù)內(nèi)容。
以上各個設(shè)備的具體實施可參見前面的實施例,在此不再贅述。
由于該定時任務(wù)的創(chuàng)建系統(tǒng)可以包括本發(fā)明實施例所提供的任一種定時任務(wù)的處理裝置,因此,可以實現(xiàn)本發(fā)明實施例所提供的任一種定時任務(wù)的處理裝置所能實現(xiàn)的有益效果,詳見前面的實施例,在此不再贅述。
第五實施例
相應(yīng)的,本發(fā)明實施例還提供一種網(wǎng)絡(luò)設(shè)備,如圖4所示,其示出了本發(fā)明實施例所涉及的網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖,具體來講:
該網(wǎng)絡(luò)設(shè)備可以包括一個或者一個以上處理核心的處理器601、一個或一個以上計算機可讀存儲介質(zhì)的存儲器602、射頻(Radio Frequency,RF)電路603、電源604、輸入單元605、以及顯示單元606等部件。本領(lǐng)域技術(shù)人員可以理解,圖4中示出的網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)并不構(gòu)成對網(wǎng)絡(luò)設(shè)備的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:
處理器601是該網(wǎng)絡(luò)設(shè)備的控制中心,利用各種接口和線路連接整個網(wǎng)絡(luò)設(shè)備的各個部分,通過運行或執(zhí)行存儲在存儲器602內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器602內(nèi)的數(shù)據(jù),執(zhí)行網(wǎng)絡(luò)設(shè)備的各種功能和處理數(shù)據(jù),從而對網(wǎng)絡(luò)設(shè)備進行整體監(jiān)控??蛇x的,處理器601可包括一個或多個處理核心;優(yōu)選的,處理器601可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器601中。
存儲器602可用于存儲軟件程序以及模塊,處理器601通過運行存儲在存儲器602的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器602可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)網(wǎng)絡(luò)設(shè)備的使用所創(chuàng)建的數(shù)據(jù)等。此外,存儲器602可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。相應(yīng)地,存儲器602還可以包括存儲器控制器,以提供處理器601對存儲器602的訪問。
RF電路603可用于收發(fā)信息過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,交由一個或者一個以上處理器601處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路603包括但不限于天線、至少一個放大器、調(diào)諧器、一個或多個振蕩器、用戶身份模塊(SIM)卡、收發(fā)信機、耦合器、低噪聲放大器(LNA,Low Noise Amplifier)、雙工器等。此外,RF電路603還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于全球移動通訊系統(tǒng)(GSM,Global System of Mobile communication)、通用分組無線服務(wù)(GPRS,General Packet Radio Service)、碼分多址(CDMA,Code Division Multiple Access)、寬帶碼分多址(WCDMA,Wideband Code Division Multiple Access)、長期演進(LTE,Long Term Evolution)、電子郵件、短消息服務(wù)(SMS,Short Messaging Service)等。
網(wǎng)絡(luò)設(shè)備還包括給各個部件供電的電源604(比如電池),優(yōu)選的,電源604可以通過電源管理系統(tǒng)與處理器601邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。電源604還可以包括一個或一個以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。
該網(wǎng)絡(luò)設(shè)備還可包括輸入單元605,該輸入單元605可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號輸入。具體地,在一個具體的實施例中,輸入單元605可包括觸敏表面以及其他輸入設(shè)備。觸敏表面,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面上或在觸敏表面附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置??蛇x的,觸敏表面可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標(biāo),再送給處理器601,并能接收處理器601發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸敏表面。除了觸敏表面,輸入單元605還可以包括其他輸入設(shè)備。具體地,其他輸入設(shè)備可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
該網(wǎng)絡(luò)設(shè)備還可包括顯示單元606,該顯示單元606可用于顯示由用戶輸入的信息或提供給用戶的信息以及網(wǎng)絡(luò)設(shè)備的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來構(gòu)成。顯示單元606可包括顯示面板,可選的,可以采用液晶顯示器(LCD,Liquid Crystal Display)、有機發(fā)光二極管(OLED,Organic Light-Emitting Diode)等形式來配置顯示面板。進一步的,觸敏表面可覆蓋顯示面板,當(dāng)觸敏表面檢測到在其上或附近的觸摸操作后,傳送給處理器601以確定觸摸事件的類型,隨后處理器601根據(jù)觸摸事件的類型在顯示面板上提供相應(yīng)的視覺輸出。雖然在圖4中,觸敏表面與顯示面板是作為兩個獨立的部件來實現(xiàn)輸入和輸入功能,但是在某些實施例中,可以將觸敏表面與顯示面板集成而實現(xiàn)輸入和輸出功能。
盡管未示出,網(wǎng)絡(luò)設(shè)備還可以包括攝像頭、藍牙模塊等,在此不再贅述。具體在本實施例中,網(wǎng)絡(luò)設(shè)備中的處理器601會按照如下的指令,將一個或一個以上的應(yīng)用程序的進程對應(yīng)的可執(zhí)行文件加載到存儲器602中,并由處理器601來運行存儲在存儲器602中的應(yīng)用程序,從而實現(xiàn)各種功能,如下:
獲取定時任務(wù)的任務(wù)信息和任務(wù)標(biāo)識,該任務(wù)信息包括線程標(biāo)識、任務(wù)內(nèi)容和時間策略;
根據(jù)該任務(wù)標(biāo)識和任務(wù)信息在已存儲的任務(wù)集合中創(chuàng)建該定時任務(wù),并開始計時;
根據(jù)計時時長和該時間策略調(diào)用該線程標(biāo)識對應(yīng)的線程;
利用該線程執(zhí)行該任務(wù)內(nèi)容。
以上各操作的實現(xiàn)方法具體可參見上述實施例,此處不再贅述。
該終端可以實現(xiàn)本發(fā)明實施例所提供的任一種定時任務(wù)的處理裝置所能實現(xiàn)的有效效果,詳見前面的實施例,在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:只讀存儲器(ROM,Read Only Memory)、隨機存取記憶體(RAM,Random Access Memory)、磁盤或光盤等。
以上對本發(fā)明實施例所提供的一種定時任務(wù)的處理方法、裝置和系統(tǒng)進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。