本發(fā)明涉及移動終端功耗控制領(lǐng)域,尤其涉及一種對齊喚醒的方法及終端。
背景技術(shù):
隨著移動終端的快速發(fā)展,用戶對移動終端的使用越來越頻繁,需要安裝越來越多的應(yīng)用來滿足用戶在不同方面的使用需求,例如,即時通訊應(yīng)用、購物應(yīng)用、社交應(yīng)用等,這些應(yīng)用都需要與各自對應(yīng)的服務(wù)器進(jìn)行數(shù)據(jù)通訊,保持?jǐn)?shù)據(jù)同步。
服務(wù)器在發(fā)送數(shù)據(jù)給應(yīng)用時,需要知道該應(yīng)用的IP地址,由于網(wǎng)絡(luò)運營商分配給移動終端的IP是運營商內(nèi)網(wǎng)的IP,所以在移動終端要與服務(wù)器進(jìn)行數(shù)據(jù)通訊時,都需要通過運營商的網(wǎng)關(guān)進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT),大部分網(wǎng)絡(luò)運營商的網(wǎng)關(guān)在鏈路上一段時間內(nèi)沒有數(shù)據(jù)通訊時,會淘汰NAT列表中的對應(yīng)鏈路,造成該鏈路中斷,所以移動終端的應(yīng)用需要定期向服務(wù)器發(fā)送心跳包,刷新NAT列表,保證連接在線,即維持一個心跳機(jī)制。
由于現(xiàn)有技術(shù)中不同的應(yīng)用自身會形成一套心跳機(jī)制,不同應(yīng)用的心跳包可單獨發(fā)送,沒有統(tǒng)一的心跳推送機(jī)制,所以不同的定時周期會導(dǎo)致移動終端頻繁被喚醒來發(fā)送心跳包,這樣移動終端就會消耗大量電量。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例期望提供一種對齊喚醒的方法及終端,以實現(xiàn)統(tǒng)一觸發(fā)時間,使多個不同的定時間隔和觸發(fā)時間的定時器一起喚醒,有效的減少終端的喚醒次數(shù),降低功耗。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
本發(fā)明提供一種對齊喚醒的方法,所述方法包括:
確定需要對齊喚醒的至少一個具有定時器的應(yīng)用;
創(chuàng)建至少一個定時器容器及所述至少一個定時器容器的數(shù)據(jù)結(jié)構(gòu)信息;
將所述需要對齊喚醒的至少一個應(yīng)用的定時器存入對應(yīng)的所述定時器容器;
確定所述至少一個定時器容器的觸發(fā)時間;
將所述需要對齊喚醒的至少一個應(yīng)用的定時器的觸發(fā)時間修改為對應(yīng)的所述定時器容器的觸發(fā)時間。
上述方法中,所述定時器容器的數(shù)據(jù)結(jié)構(gòu)信息至少包括一個:觸發(fā)時間,定時間隔,最大可容納定時器的個數(shù)。
上述方法中,所述確定需要對齊喚醒的至少一個具有定時器的應(yīng)用,包括:
搜索所有應(yīng)用,得到至少一個具有定時器的應(yīng)用;
根據(jù)用戶設(shè)置的應(yīng)用保護(hù)白名單確定所述至少一個具有定時器的應(yīng)用是否需要對齊喚醒,若所述至少一個具有定時器的應(yīng)用在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用不需要對齊喚醒;
若所述至少一個具有定時器的應(yīng)用不在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用需要對齊喚醒。
上述方法中,所述將所述需要對齊喚醒的至少一個應(yīng)用的定時器存入對應(yīng)的所述定時器容器,包括:
將所述需要對齊喚醒的至少一個應(yīng)用的定時器按照預(yù)設(shè)條件存入對應(yīng)的所述定時器容器;
所述按照預(yù)設(shè)條件存入對應(yīng)的所述定時器容器,包括:
判斷所述定時器的定時間隔是否小于等于所述定時器容器的定時間隔,若所述定時器的定時間隔小于等于所述定時器容器的定時間隔,則將對應(yīng)的定時器存入同一個定時器容器;
若所述定時器的定時間隔大于所述定時器容器的定時間隔,則將對應(yīng)的至定時器存入新的定時器容器;
或,所述將所述需要對齊喚醒的至少一個應(yīng)用的定時器存入對應(yīng)的所述定時器容器,包括:
將所述需要對齊喚醒的至少一個應(yīng)用的定時器根據(jù)預(yù)設(shè)觸發(fā)時間差值存入對應(yīng)的所述定時器容器;
所述根據(jù)預(yù)設(shè)觸發(fā)時間差值存入對應(yīng)的所述定時器容器,包括:
當(dāng)所述應(yīng)用為一個時,則將所述應(yīng)用的定時器加入當(dāng)前定時器容器;
當(dāng)所述應(yīng)用為多個時,在所述多個應(yīng)用的定時器中確定一個目標(biāo)定時器,判斷所述目標(biāo)定時器的觸發(fā)時間分別與其他所述定時器的觸發(fā)時間的差值,若所述差值小于等于所述預(yù)設(shè)觸發(fā)時間差值,則將所述目標(biāo)定時器和對應(yīng)的定時器存入同一個定時器容器;
若所述差值大于所述預(yù)設(shè)觸發(fā)時間差值,則將所述目標(biāo)定時器存入新的定時器容器。
上述方法中,所述確定所述至少一個定時器容器的觸發(fā)時間,包括:
將在所述定時器容器中的所述定時器的最大觸發(fā)時間作為所述定時器容器的觸發(fā)時間。
本發(fā)明還提供一種對齊喚醒的終端,所述終端包括:
應(yīng)用確定模塊,用于確定需要對齊喚醒的至少一個具有定時器的應(yīng)用;
創(chuàng)建模塊,用于創(chuàng)建至少一個定時器容器及所述至少一個定時器容器的數(shù)據(jù)結(jié)構(gòu)信息;
存入模塊,用于將所述需要對齊喚醒的至少一個應(yīng)用的定時器存入對應(yīng)的所述定時器容器;
觸發(fā)時間確定模塊,用于確定所述至少一個定時器容器的觸發(fā)時間;
修改模塊,用于將所述需要對齊喚醒的至少一個應(yīng)用的定時器的觸發(fā)時間修改為對應(yīng)的所述定時器容器的觸發(fā)時間。
上述終端中,所述定時器容器的數(shù)據(jù)結(jié)構(gòu)信息至少包括一個:觸發(fā)時間,定時間隔,最大可容納定時器的個數(shù)。
上述終端中,所述應(yīng)用確定模塊,具體用于搜索所有應(yīng)用,得到至少一個 具有定時器的應(yīng)用;
根據(jù)用戶設(shè)置的應(yīng)用保護(hù)白名單確定所述至少一個具有定時器的應(yīng)用是否需要對齊喚醒,若所述至少一個具有定時器的應(yīng)用在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用不需要對齊喚醒;
若所述至少一個具有定時器的應(yīng)用不在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用需要對齊喚醒。
上述終端中,所述存入模塊,具體用于將所述需要對齊喚醒的至少一個應(yīng)用的定時器按照預(yù)設(shè)條件存入對應(yīng)的所述定時器容器;
所述按照預(yù)設(shè)條件存入對應(yīng)的所述定時器容器,包括:
判斷所述定時器的定時間隔是否小于等于所述定時器容器的定時間隔,若所述定時器的定時間隔小于等于所述定時器容器的定時間隔,則將對應(yīng)的定時器存入同一個定時器容器;
若所述定時器的定時間隔大于所述定時器容器的定時間隔,則將對應(yīng)的至定時器存入新的定時器容器;
或,還具體用于將所述需要對齊喚醒的至少一個應(yīng)用的定時器根據(jù)預(yù)設(shè)觸發(fā)時間差值存入對應(yīng)的所述定時器容器;
所述根據(jù)預(yù)設(shè)觸發(fā)時間差值存入對應(yīng)的所述定時器容器,包括:
當(dāng)所述應(yīng)用為一個時,則將所述應(yīng)用的定時器加入當(dāng)前定時器容器;
當(dāng)所述應(yīng)用為多個時,在所述多個應(yīng)用的定時器中確定一個目標(biāo)定時器,判斷所述目標(biāo)定時器的觸發(fā)時間分別與其他所述定時器的觸發(fā)時間的差值,若所述差值小于等于所述預(yù)設(shè)觸發(fā)時間差值,則將所述目標(biāo)定時器和對應(yīng)的定時器存入同一個定時器容器;
若所述差值大于所述預(yù)設(shè)觸發(fā)時間差值,則將所述目標(biāo)定時器存入新的定時器容器。
上述終端中,所述觸發(fā)時間確定模塊,具體用于將在所述定時器容器中的所述定時器的最大觸發(fā)時間作為所述定時器容器的觸發(fā)時間。
本發(fā)明實施例提供的對齊喚醒的方法及終端,對齊喚醒的終端首先通過應(yīng) 用保護(hù)白名單來確定出需要對齊喚醒的具有定時器的應(yīng)用;接著創(chuàng)建至少一個定時器容器及該至少一個定時器容器的數(shù)據(jù)結(jié)構(gòu)信息;其次將需要對齊喚醒的至少一個應(yīng)用的定時器存入對應(yīng)的定時器容器中;然后根據(jù)在定時器容器中最大的應(yīng)用的定時器的觸發(fā)時間作為定時器容器的觸發(fā)時間;最后將至少一個應(yīng)用的定時器的觸發(fā)時間修改為對應(yīng)的定時器容器的觸發(fā)時間;通過將定時器容器中的所有定時器的觸發(fā)時間進(jìn)行了對齊操作,統(tǒng)一了觸發(fā)時間,使多個不同的定時間隔和觸發(fā)時間的定時器一起喚醒,有效的減少了終端的喚醒次數(shù),降低了功耗;另外,用戶根據(jù)應(yīng)用保護(hù)白名單列表中的應(yīng)用可以選擇哪些應(yīng)用需要加入對齊喚醒管理,哪些應(yīng)用不需要加入對齊喚醒管理,這樣用戶可以根據(jù)自身需求對精確定時的應(yīng)用不進(jìn)行對齊喚醒管理,對實時性要求不高的應(yīng)用進(jìn)行對齊喚醒管理,方便了用戶的使用,解決了有可能帶來觸發(fā)時間不準(zhǔn)的問題。
附圖說明
圖1為本發(fā)明對齊喚醒的方法實施例一的流程圖;
圖2為本發(fā)明對齊喚醒的方法實施例二的流程圖;
圖3為本發(fā)明對齊喚醒的終端實施例的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
圖1為本發(fā)明對齊喚醒的方法實施例一的流程圖,如圖1所示,本方法可以包括如下步驟:
步驟101、確定需要對齊喚醒的至少一個具有定時器的應(yīng)用;
具體的,首先,對齊喚醒的終端搜索所有在終端中的應(yīng)用,得到至少一個具有定時器的應(yīng)用;然后,根據(jù)用戶設(shè)置的應(yīng)用保護(hù)白名單確定所述至少一個具有定時器的應(yīng)用是否需要對齊喚醒,若所述至少一個具有定時器的應(yīng)用在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用不需要對 齊喚醒;若所述至少一個具有定時器的應(yīng)用不在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用需要對齊喚醒。
本發(fā)明實施例的對齊喚醒的終端可以包括諸如移動電話、智能電話、筆記本電腦、數(shù)字廣播接收器、個人數(shù)字助理(PDA)、平板電腦(PAD)、便攜式多媒體播放器(PMP)、導(dǎo)航裝置等等的移動終端。
終端如果具有操作系統(tǒng),該操作系統(tǒng)可以為UNIX、Linux、Windows、Mac OS X、安卓(Android)、Windows Phone等等。
應(yīng)用軟件(Application,APP)是智能終端的第三方應(yīng)用程序,用戶可以通過各種各樣的應(yīng)用軟件進(jìn)行辦公、娛樂、獲取信息等等,其格式包括了如ipa、pxl、deb、apk等等格式。
例如,在Android操作系統(tǒng)下,應(yīng)用保護(hù)白名單根據(jù)AlarmManager提供的接口信息搜索到具有定時器的應(yīng)用為A、B、C、D、E,對齊喚醒的終端將A、B、C、D、E添加到應(yīng)用保護(hù)白名單中,用戶想要對A、C、E這三個應(yīng)用進(jìn)行對齊喚醒,對B、D這倆應(yīng)用不進(jìn)行對齊喚醒,那么可以在應(yīng)用保護(hù)白名單上設(shè)置,將A、C、E這三個應(yīng)用確定成需要對齊喚醒,生成一個對齊喚醒的配置文件。
本發(fā)明實施例中的對齊喚醒的終端搜索自身中哪些應(yīng)用使用了定時器,并將這些使用定時器的應(yīng)用通過應(yīng)用保護(hù)白名單列表方式記錄;用戶根據(jù)應(yīng)用保護(hù)白名單列表中的應(yīng)用可以選擇哪些應(yīng)用需要加入對齊喚醒管理,哪些應(yīng)用不需要加入對齊喚醒管理,這樣用戶可以根據(jù)自身需求對精確定時的應(yīng)用不進(jìn)行對齊喚醒管理,對實時性要求不高的應(yīng)用進(jìn)行對齊喚醒管理,方便了用戶的使用,解決了有可能帶來觸發(fā)時間不準(zhǔn)的問題。
步驟102、創(chuàng)建至少一個定時器容器及所述至少一個定時器容器的數(shù)據(jù)結(jié)構(gòu)信息。
對齊喚醒的終端得到需要加入對齊喚醒管理的應(yīng)用后,會通過用戶編寫好的命令創(chuàng)建至少一個定時器容器以及該定時器容器的數(shù)據(jù)結(jié)構(gòu)信息;該定時器容器用于存入一個或多個各個應(yīng)用的定時器,該定時器容器的數(shù)據(jù)結(jié)構(gòu)信息包 括了該定時器容器的觸發(fā)時間,定時間隔,最大可容納定時器的個數(shù)等它們其中的至少一個,其中,觸發(fā)時間可以根據(jù)用戶的命令,在對齊喚醒之前提前設(shè)置好,也可以根據(jù)定時器容器中的某個定時器的觸發(fā)時間來動態(tài)調(diào)整。
例如,觸發(fā)時間為8:50或者為缺省,由某個定時器的觸發(fā)時間來決定,定時間隔為10分鐘,可容納定時器的個數(shù)為3個等等;這里需要說明的是,上述的數(shù)字僅以舉例說明,具體的可以根據(jù)實際需求進(jìn)行設(shè)置,在此不加以限定。
在Android操作系統(tǒng)下,用戶可以通過指令在定時器框架AlarmManagerService中增加該定時器容器以及該定時器容器的數(shù)據(jù)結(jié)構(gòu)信息。
步驟103、將所述需要對齊喚醒的至少一個應(yīng)用的定時器根據(jù)預(yù)設(shè)條件存入對應(yīng)的所述定時器容器。
對齊喚醒的終端將所述需要對齊喚醒的至少一個應(yīng)用的定時器根據(jù)預(yù)設(shè)條件存入對應(yīng)的所述定時器容器;其中,所述按照預(yù)設(shè)條件存入對應(yīng)的所述定時器容器的具體步驟包括:
判斷所述定時器的定時間隔是否小于等于所述定時器容器的定時間隔,若所述定時器的定時間隔小于等于所述定時器容器的定時間隔,則將對應(yīng)的定時器存入同一個定時器容器;若所述定時器的定時間隔大于所述定時器容器的定時間隔,則將對應(yīng)的定時器存入新的定時器容器。
例如,對齊喚醒的終端將需要對齊喚醒的A、C、E這三個應(yīng)用存入對應(yīng)的定時器容器中,具體的,在獲得A的定時間隔為5分鐘,C的定時間隔為10分鐘,E的定時間隔為15分鐘,定時器容器的定時間隔為10分鐘后,將A、C、E各自的定時間隔與定時器容器的定時間隔進(jìn)行對比判斷,可以得到A、C的定時間隔5分鐘、10分鐘小于等于定時器容器的定時間隔10分鐘,E的定時間隔15分鐘大于容器的定時間隔10分鐘,則將A、C存入同一個定時器容器中,該定時器容器的定時間隔為10分鐘,將E存入新的定時器容器中,該定時器容器的定時間隔為15分鐘。
在Android操作系統(tǒng)下,用戶可以通過指令調(diào)用AlarmManagerService中的設(shè)置接口,修改該設(shè)置接口,在開始時讀取對齊喚醒的配置文件,將對齊喚醒 的配置文件中的A、C、E這三個應(yīng)用進(jìn)行上述處理操作。
步驟104、確定所述至少一個定時器容器的觸發(fā)時間。
對齊喚醒的終端將在所述定時器容器中的所述定時器的最大觸發(fā)時間作為所述定時器容器的觸發(fā)時間。
例如,C的定時器的觸發(fā)時間為9:15,A的定時器的觸發(fā)時間為9:10,由于C的定時器的觸發(fā)時間比A的定時器的觸發(fā)時間要大,所以對齊喚醒的終端將存入A、C的定時器容器的觸發(fā)時間修改為C的定時器的觸發(fā)時間,即9:15;E的定時器的觸發(fā)時間為9:20,所以對齊喚醒的終端將存入E的定時器容器的觸發(fā)時間修改為E的定時器的觸發(fā)時間,即9:20。
步驟105、將所述需要對齊喚醒的至少一個應(yīng)用的定時器的觸發(fā)時間修改為對應(yīng)的所述定時器容器的觸發(fā)時間。
對齊喚醒的終端將在一個定時器容器中的所有定時器的觸發(fā)時間修改為該定時器容器的觸發(fā)時間,即將該定時器容器中的所有定時器的觸發(fā)時間進(jìn)行了對齊操作,統(tǒng)一了觸發(fā)時間,使多個不同的定時間隔和觸發(fā)時間的定時器一起喚醒,有效的減少了終端的喚醒次數(shù),降低了功耗。
另外,在一起喚醒后,計算該定時器容器中的每個定時器的下一次觸發(fā)時間,即下一次觸發(fā)時間=本次的觸發(fā)時間+定時間隔;清空之前的定時器容器,根據(jù)每個定時器的下一次觸發(fā)時間重新根據(jù)步驟103的過程進(jìn)行處理。
例如,對齊喚醒的終端在定時器容器中將A的定時器的觸發(fā)時間修改為9:15,將C的定時器的觸發(fā)時間也修改為9:15,A、C的定時器只在9:15時刻進(jìn)行統(tǒng)一的喚醒,在喚醒后,計算A的定時器的下一次觸發(fā)時間,即A的定時器的下一次觸發(fā)時間=9:15+0:05=9:20;計算C的定時器的下一次觸發(fā)時間,即C的定時器的下一次觸發(fā)時間=9:15+0:10=9:25;清空之前的定時器容器,根據(jù)A、C的定時器的下一次觸發(fā)時間重新根據(jù)步驟103的過程進(jìn)行處理。
在Android操作系統(tǒng)下,可以將框架中定時器的定時策略進(jìn)行修改,把一定范圍的定時器統(tǒng)一進(jìn)行觸發(fā),從而有效的減少終端被喚醒的次數(shù),降低功耗。
本發(fā)明實施例的對齊喚醒的方法,對齊喚醒的終端首先通過應(yīng)用保護(hù)白名 單來確定出需要對齊喚醒的具有定時器的應(yīng)用;接著創(chuàng)建至少一個定時器容器及該至少一個定時器容器的數(shù)據(jù)結(jié)構(gòu)信息;其次將需要對齊喚醒的至少一個應(yīng)用的定時器存入對應(yīng)的定時器容器中;然后根據(jù)在定時器容器中最大的應(yīng)用的定時器的觸發(fā)時間作為定時器容器的觸發(fā)時間;最后將至少一個應(yīng)用的定時器的觸發(fā)時間修改為對應(yīng)的定時器容器的觸發(fā)時間;通過將定時器容器中的所有定時器的觸發(fā)時間進(jìn)行了對齊操作,統(tǒng)一了觸發(fā)時間,使多個不同的定時間隔和觸發(fā)時間的定時器一起喚醒,有效的減少了終端的喚醒次數(shù),降低了功耗;另外,用戶根據(jù)應(yīng)用保護(hù)白名單列表中的應(yīng)用可以選擇哪些應(yīng)用需要加入對齊喚醒管理,哪些應(yīng)用不需要加入對齊喚醒管理,這樣用戶可以根據(jù)自身需求對精確定時的應(yīng)用不進(jìn)行對齊喚醒管理,對實時性要求不高的應(yīng)用進(jìn)行對齊喚醒管理,方便了用戶的使用,解決了有可能帶來觸發(fā)時間不準(zhǔn)的問題。
圖2為本發(fā)明對齊喚醒的方法實施例二的流程圖,如圖2所示,本方法可以包括如下步驟:
步驟201、確定需要對齊喚醒的至少一個具有定時器的應(yīng)用。
具體的,首先,對齊喚醒的終端搜索所有在終端中的應(yīng)用,得到至少一個具有定時器的應(yīng)用;然后,根據(jù)用戶設(shè)置的應(yīng)用保護(hù)白名單確定所述至少一個具有定時器的應(yīng)用是否需要對齊喚醒,若所述至少一個具有定時器的應(yīng)用在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用不需要對齊喚醒;若所述至少一個具有定時器的應(yīng)用不在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用需要對齊喚醒。
本發(fā)明實施例的對齊喚醒的終端可以包括諸如移動電話、智能電話、筆記本電腦、數(shù)字廣播接收器、個人數(shù)字助理(PDA)、平板電腦(PAD)、便攜式多媒體播放器(PMP)、導(dǎo)航裝置等等的移動終端。
終端如果具有操作系統(tǒng),該操作系統(tǒng)可以為UNIX、Linux、Windows、Mac OS X、安卓(Android)、Windows Phone等等。
應(yīng)用軟件(Application,APP)是智能終端的第三方應(yīng)用程序,用戶可以通過各種各樣的應(yīng)用軟件進(jìn)行辦公、娛樂、獲取信息等等,其格式包括了如ipa、 pxl、deb、apk等等格式。
例如,在Android操作系統(tǒng)下,應(yīng)用保護(hù)白名單根據(jù)AlarmManager提供的接口信息搜索到具有定時器的應(yīng)用為F、G、H、I、J,對齊喚醒的終端將F、G、H、I、J添加到應(yīng)用保護(hù)白名單中,用戶想要對F、H、J這三個應(yīng)用進(jìn)行對齊喚醒,對G、I這倆應(yīng)用不進(jìn)行對齊喚醒,那么可以在應(yīng)用保護(hù)白名單上設(shè)置,將F、H、J這三個應(yīng)用確定成需要對齊喚醒,生成一個對齊喚醒的配置文件。
本發(fā)明實施例中的對齊喚醒的終端搜索自身中哪些應(yīng)用使用了定時器,并將這些使用定時器的應(yīng)用通過應(yīng)用保護(hù)白名單列表方式記錄;用戶根據(jù)應(yīng)用保護(hù)白名單列表中的應(yīng)用可以選擇哪些應(yīng)用需要加入對齊喚醒管理,哪些應(yīng)用不需要加入對齊喚醒管理,這樣用戶可以根據(jù)自身需求對精確定時的應(yīng)用不進(jìn)行對齊喚醒管理,對實時性要求不高的應(yīng)用進(jìn)行對齊喚醒管理,方便了用戶的使用,解決了有可能帶來觸發(fā)時間不準(zhǔn)的問題。
步驟202、創(chuàng)建至少一個定時器容器及所述至少一個定時器容器的數(shù)據(jù)結(jié)構(gòu)信息。
對齊喚醒的終端得到需要加入對齊喚醒管理的應(yīng)用后,會通過用戶編寫好的命令創(chuàng)建至少一個定時器容器以及該定時器容器的數(shù)據(jù)結(jié)構(gòu)信息;該定時器容器用于存入一個或多個各個應(yīng)用的定時器,該定時器容器的數(shù)據(jù)結(jié)構(gòu)信息包括了該定時器容器的觸發(fā)時間,定時間隔,最大可容納定時器的個數(shù)等它們其中的至少一個,其中,觸發(fā)時間可以根據(jù)用戶的命令,在對齊喚醒之前提前設(shè)置好,也可以根據(jù)定時器容器中的某個定時器的觸發(fā)時間來動態(tài)調(diào)整。
例如,觸發(fā)時間為8:50或者為缺省,由某個定時器的觸發(fā)時間來決定,定時間隔為10分鐘,可容納定時器的個數(shù)為3個等等;這里需要說明的是,上述的數(shù)字僅以舉例說明,具體的可以根據(jù)實際需求進(jìn)行設(shè)置,在此不加以限定。
在Android操作系統(tǒng)下,用戶可以通過指令在定時器框架AlarmManagerService中增加該定時器容器以及該定時器容器的數(shù)據(jù)結(jié)構(gòu)信息。
步驟203、將所述需要對齊喚醒的至少一個應(yīng)用的定時器根據(jù)預(yù)設(shè)觸發(fā)時間差值存入對應(yīng)的所述定時器容器。
對齊喚醒的終端將所述需要對齊喚醒的至少一個應(yīng)用的定時器根據(jù)預(yù)設(shè)觸發(fā)時間差值存入對應(yīng)的所述定時器容器;其中,所述根據(jù)預(yù)設(shè)觸發(fā)時間差值存入對應(yīng)的所述定時器容器的具體步驟包括:
當(dāng)所述應(yīng)用為一個時,則將所述應(yīng)用的定時器加入當(dāng)前定時器容器;
當(dāng)所述應(yīng)用為多個時,在所述多個應(yīng)用的定時器中確定一個目標(biāo)定時器,判斷所述目標(biāo)定時器的觸發(fā)時間分別與其他所述定時器的觸發(fā)時間的差值,若所述差值小于等于所述預(yù)設(shè)觸發(fā)時間差值,則將所述目標(biāo)定時器和對應(yīng)的定時器存入同一個定時器容器;若所述差值大于所述預(yù)設(shè)觸發(fā)時間差值,則將所述目標(biāo)定時器存入新的定時器容器。
例如,對齊喚醒的終端將需要對齊喚醒的F、H、J這三個應(yīng)用存入對應(yīng)的定時器容器中,具體的,在獲得F的觸發(fā)時間為9:00,H的觸發(fā)時間為9:10,H的觸發(fā)時間為9:20,預(yù)設(shè)觸發(fā)時間差值為10分鐘后,在F、H、J的定時器中確定F的定時器為目標(biāo)定時器,判斷F的定時器的觸發(fā)時間9:00分別與H、J的定時器的觸發(fā)時間9:10、9:20的差值,得到與H的定時器的觸發(fā)時間的差值為10分鐘,與J的定時器的觸發(fā)時間的差值為20分鐘;因為F與H的差值小于等于預(yù)設(shè)觸發(fā)時間差值10分鐘,所以將F和H的定時器存入同一個定時器容器;因為F與J的差值大于預(yù)設(shè)觸發(fā)時間差值10分鐘,所以將J的定時器存入新的定時器容器。
在Android操作系統(tǒng)下,用戶可以通過指令調(diào)用AlarmManagerService中的設(shè)置接口,修改該設(shè)置接口,在開始時讀取對齊喚醒的配置文件,將對齊喚醒的配置文件中的A、C、E這三個應(yīng)用進(jìn)行上述處理操作。
步驟204、確定所述至少一個定時器容器的觸發(fā)時間。
對齊喚醒的終端將在所述定時器容器中的所述定時器的最大觸發(fā)時間作為所述定時器容器的觸發(fā)時間。
例如,H的定時器的觸發(fā)時間為9:10,F(xiàn)的定時器的觸發(fā)時間為9:00,由于H的定時器的觸發(fā)時間比F的定時器的觸發(fā)時間要大,所以對齊喚醒的終端將存入F、H的定時器容器的觸發(fā)時間修改為H的定時器的觸發(fā)時間,即9:10; J的定時器的觸發(fā)時間為9:20,所以對齊喚醒的終端將存入J的定時器容器的觸發(fā)時間修改為E的定時器的觸發(fā)時間,即9:20。
步驟205、將所述需要對齊喚醒的至少一個應(yīng)用的定時器的觸發(fā)時間修改為對應(yīng)的所述定時器容器的觸發(fā)時間。
對齊喚醒的終端將在一個定時器容器中的所有定時器的觸發(fā)時間修改為該定時器容器的觸發(fā)時間,即將該定時器容器中的所有定時器的觸發(fā)時間進(jìn)行了對齊操作,統(tǒng)一了觸發(fā)時間,使多個不同的定時間隔和觸發(fā)時間的定時器一起喚醒,有效的減少了終端的喚醒次數(shù),降低了功耗。
另外,在一起喚醒后,計算該定時器容器中的每個定時器的下一次觸發(fā)時間,即下一次觸發(fā)時間=本次的觸發(fā)時間+定時間隔;清空之前的定時器容器,根據(jù)每個定時器的下一次觸發(fā)時間重新根據(jù)步驟103的過程進(jìn)行處理。
例如,對齊喚醒的終端在定時器容器中將F的定時器的觸發(fā)時間修改為9:10,將H的定時器的觸發(fā)時間也修改為9:10,F(xiàn)的定時間隔為0:05,H的定時間隔為0:10,H、F的定時器只在9:10時刻進(jìn)行統(tǒng)一的喚醒,在喚醒后,計算F的定時器的下一次觸發(fā)時間,即F的定時器的下一次觸發(fā)時間=9:10+0:05=9:15;計算H的定時器的下一次觸發(fā)時間,即H的定時器的下一次觸發(fā)時間=9:10+0:10=9:20;清空之前的定時器容器,根據(jù)F、H的定時器的下一次觸發(fā)時間重新根據(jù)步驟203的過程進(jìn)行處理。
在Android操作系統(tǒng)下,可以將框架中定時器的定時策略進(jìn)行修改,把一定范圍的定時器統(tǒng)一進(jìn)行觸發(fā),從而有效的減少終端被喚醒的次數(shù),降低功耗。
本發(fā)明實施例的對齊喚醒的方法,對齊喚醒的終端首先通過應(yīng)用保護(hù)白名單來確定出需要對齊喚醒的具有定時器的應(yīng)用;接著創(chuàng)建至少一個定時器容器及該至少一個定時器容器的數(shù)據(jù)結(jié)構(gòu)信息;其次將需要對齊喚醒的至少一個應(yīng)用的定時器存入對應(yīng)的定時器容器中;然后根據(jù)在定時器容器中最大的應(yīng)用的定時器的觸發(fā)時間作為定時器容器的觸發(fā)時間;最后將至少一個應(yīng)用的定時器的觸發(fā)時間修改為對應(yīng)的定時器容器的觸發(fā)時間;通過將定時器容器中的所有定時器的觸發(fā)時間進(jìn)行了對齊操作,統(tǒng)一了觸發(fā)時間,使多個不同的定時間隔 和觸發(fā)時間的定時器一起喚醒,有效的減少了終端的喚醒次數(shù),降低了功耗;另外,用戶根據(jù)應(yīng)用保護(hù)白名單列表中的應(yīng)用可以選擇哪些應(yīng)用需要加入對齊喚醒管理,哪些應(yīng)用不需要加入對齊喚醒管理,這樣用戶可以根據(jù)自身需求對精確定時的應(yīng)用不進(jìn)行對齊喚醒管理,對實時性要求不高的應(yīng)用進(jìn)行對齊喚醒管理,方便了用戶的使用,解決了有可能帶來觸發(fā)時間不準(zhǔn)的問題。
圖3為本發(fā)明對齊喚醒的終端實施例的結(jié)構(gòu)示意圖,如圖3所示,所述對齊喚醒的終端03可以包括:應(yīng)用確定模塊61、創(chuàng)建模塊62、存入模塊63、觸發(fā)時間確定模塊64、修改模塊65;其中,
所述應(yīng)用確定模塊61,用于確定需要對齊喚醒的至少一個具有定時器的應(yīng)用;
所述創(chuàng)建模塊62,用于創(chuàng)建至少一個定時器容器及所述至少一個定時器容器的數(shù)據(jù)結(jié)構(gòu)信息;
所述存入模塊63,用于將所述需要對齊喚醒的至少一個應(yīng)用的定時器存入對應(yīng)的所述定時器容器;
所述觸發(fā)時間確定模塊64,用于確定所述至少一個定時器容器的觸發(fā)時間;
所述修改模塊65,用于將所述需要對齊喚醒的至少一個應(yīng)用的定時器的觸發(fā)時間修改為對應(yīng)的所述定時器容器的觸發(fā)時間。
進(jìn)一步的,所述定時器容器的數(shù)據(jù)結(jié)構(gòu)信息至少包括一個:觸發(fā)時間,定時間隔,最大可容納定時器的個數(shù)。
進(jìn)一步的,所述應(yīng)用確定模塊61,具體用于搜索所有應(yīng)用,得到至少一個具有定時器的應(yīng)用;
根據(jù)用戶設(shè)置的應(yīng)用保護(hù)白名單確定所述至少一個具有定時器的應(yīng)用是否需要對齊喚醒,若所述至少一個具有定時器的應(yīng)用在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用不需要對齊喚醒;
若所述至少一個具有定時器的應(yīng)用不在所述應(yīng)用保護(hù)白名單中,則確定對應(yīng)的所述至少一個具有定時器的應(yīng)用需要對齊喚醒。
進(jìn)一步的,所述存入模塊63,具體用于將所述需要對齊喚醒的至少一個應(yīng)用的定時器按照預(yù)設(shè)條件存入對應(yīng)的所述定時器容器;
所述按照預(yù)設(shè)條件存入對應(yīng)的所述定時器容器,包括:
判斷所述定時器的定時間隔是否小于等于所述定時器容器的定時間隔,若所述定時器的定時間隔小于等于所述定時器容器的定時間隔,則將對應(yīng)的定時器存入同一個定時器容器;
若所述定時器的定時間隔大于所述定時器容器的定時間隔,則將對應(yīng)的至定時器存入新的定時器容器;
或,還具體用于將所述需要對齊喚醒的至少一個應(yīng)用的定時器根據(jù)預(yù)設(shè)觸發(fā)時間差值存入對應(yīng)的所述定時器容器;
所述根據(jù)預(yù)設(shè)觸發(fā)時間差值存入對應(yīng)的所述定時器容器,包括:
當(dāng)所述應(yīng)用為一個時,則將所述應(yīng)用的定時器加入當(dāng)前定時器容器;
當(dāng)所述應(yīng)用為多個時,在所述多個應(yīng)用的定時器中確定一個目標(biāo)定時器,判斷所述目標(biāo)定時器的觸發(fā)時間分別與其他所述定時器的觸發(fā)時間的差值,若所述差值小于等于所述預(yù)設(shè)觸發(fā)時間差值,則將所述目標(biāo)定時器和對應(yīng)的定時器存入同一個定時器容器;
若所述差值大于所述預(yù)設(shè)觸發(fā)時間差值,則將所述目標(biāo)定時器存入新的定時器容器。
進(jìn)一步的,所述觸發(fā)時間確定模塊64,具體用于將在所述定時器容器中的所述定時器的最大觸發(fā)時間作為所述定時器容器的觸發(fā)時間。
本實施例的終端,可以用于執(zhí)行上述所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
在實際應(yīng)用中,所述應(yīng)用確定模塊61、創(chuàng)建模塊62、存入模塊63、觸發(fā)時間確定模塊64、修改模塊65可由位于終端上的中央處理器(CPU)、微處理器(MPU)、數(shù)字信號處理器(DSP)或現(xiàn)場可編程門陣列(FPGA)等器件實現(xiàn)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計 算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用硬件實施例、軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。