本發(fā)明涉及終端技術(shù)領(lǐng)域,特別涉及一種應(yīng)用狀態(tài)轉(zhuǎn)換方法、裝置及移動(dòng)終端。
背景技術(shù):
隨著移動(dòng)操作系統(tǒng)的不斷發(fā)展,移動(dòng)操作系統(tǒng)中的應(yīng)用(application)對(duì)后臺(tái)運(yùn)行的需求也越來(lái)越大。為了使應(yīng)用能夠在后臺(tái)運(yùn)行,移動(dòng)操作系統(tǒng)需要提供相應(yīng)的后臺(tái)技術(shù)接口供應(yīng)用調(diào)用。
相關(guān)技術(shù)中,蘋(píng)果公司開(kāi)發(fā)的移動(dòng)操作系統(tǒng)(ios)提供的后臺(tái)技術(shù)接口包括網(wǎng)絡(luò)語(yǔ)音電話(英文:voiceoverinternetprotocol;簡(jiǎn)稱:voip)后臺(tái)接口、音樂(lè)播放后臺(tái)接口、定位服務(wù)后臺(tái)接口以及后臺(tái)任務(wù)申請(qǐng)接口,應(yīng)用通過(guò)調(diào)用相應(yīng)的后臺(tái)任務(wù)接口即可實(shí)現(xiàn)在后臺(tái)狀態(tài)(background)下運(yùn)行。
當(dāng)前,在后臺(tái)狀態(tài)下運(yùn)行的應(yīng)用由于各種原因(例如因?yàn)轭l繁被喚醒而被ios殺死,或者超過(guò)設(shè)定時(shí)長(zhǎng)而被ios退出)將進(jìn)入未運(yùn)行狀態(tài)(notrunning),導(dǎo)致應(yīng)用無(wú)法在后臺(tái)常駐。
技術(shù)實(shí)現(xiàn)要素:
為了解決相關(guān)技術(shù)中應(yīng)用被ios殺死或退出而進(jìn)入未運(yùn)行狀態(tài),導(dǎo)致應(yīng)用無(wú)法在后臺(tái)常駐的問(wèn)題,本發(fā)明實(shí)施例提供了一種應(yīng)用狀態(tài)轉(zhuǎn)換方法、裝置及移動(dòng)終端。所述技術(shù)方案如下:
第一方面,提供了一種應(yīng)用狀態(tài)轉(zhuǎn)換方法,用于移動(dòng)終端中,該移動(dòng)終端中安裝有操作系統(tǒng),且操作系統(tǒng)中安裝有至少一個(gè)應(yīng)用,該方法包括:
啟動(dòng)所述應(yīng)用,所述應(yīng)用通過(guò)所述操作系統(tǒng)提供的voip后臺(tái)接口配置voip功能;
當(dāng)確定所述應(yīng)用開(kāi)始從運(yùn)行狀態(tài)向未運(yùn)行狀態(tài)轉(zhuǎn)換時(shí),在所述轉(zhuǎn)換完成前重啟所述應(yīng)用,所述運(yùn)行狀態(tài)包括前臺(tái)狀態(tài)或后臺(tái)狀態(tài);
在重啟所述應(yīng)用的過(guò)程中向所述操作系統(tǒng)注冊(cè)定時(shí)任務(wù),所述定時(shí)任務(wù)用于指示所述操作系統(tǒng)周期性喚醒處于掛起狀態(tài)的所述應(yīng)用;
根據(jù)所述定時(shí)任務(wù),周期性喚醒處于所述掛起狀態(tài)的所述應(yīng)用,喚醒后的所述應(yīng)用處于后臺(tái)狀態(tài)。
通過(guò)預(yù)先為應(yīng)用配置voip功能,使應(yīng)用由運(yùn)行狀態(tài)向未運(yùn)行狀態(tài)轉(zhuǎn)換時(shí)存在一段緩沖期,應(yīng)用利用這段緩沖期自動(dòng)重啟并向操作系統(tǒng)注冊(cè)定時(shí)任務(wù),使得操作系統(tǒng)能夠根據(jù)定時(shí)任務(wù)周期性喚醒重啟后處于掛起狀態(tài)的應(yīng)用,從而實(shí)現(xiàn)了應(yīng)用在后臺(tái)的常駐。
結(jié)合第一方面,在第一方面的第一種可能的實(shí)施方式中,當(dāng)所述應(yīng)用處于所述前臺(tái)狀態(tài)時(shí),所述方法還包括:
當(dāng)檢測(cè)到預(yù)定操作時(shí),將所述應(yīng)用從所述前臺(tái)狀態(tài)轉(zhuǎn)換為所述掛起狀態(tài);
通過(guò)預(yù)定喚醒方式,喚醒處于所述掛起狀態(tài)的所述應(yīng)用;所述預(yù)定喚醒方式包括數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式中的至少一種。
當(dāng)用戶對(duì)移動(dòng)終端進(jìn)行了特定操作,使得應(yīng)用由前臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)時(shí),通過(guò)數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式將應(yīng)用從掛起狀態(tài)中喚醒,實(shí)現(xiàn)了應(yīng)用的后臺(tái)常駐。
結(jié)合第一方面的第一種可能的實(shí)施方式,在第一方面的第二種可能的實(shí)施方式中,當(dāng)通過(guò)所述數(shù)據(jù)推送喚醒方式喚醒所述應(yīng)用時(shí),所述通過(guò)預(yù)定喚醒方式,喚醒處于所述掛起狀態(tài)的所述應(yīng)用,包括:
當(dāng)接收到應(yīng)用服務(wù)器向所述應(yīng)用推送的數(shù)據(jù)時(shí),喚醒處于所述掛起狀態(tài)的所述應(yīng)用。
配置有voip功能的應(yīng)用處于掛起狀態(tài)時(shí),終端接管該應(yīng)用于應(yīng)用服務(wù)器之間的連接,當(dāng)接收到應(yīng)用服務(wù)器發(fā)送的數(shù)據(jù)時(shí),即喚醒處于掛起狀態(tài)的應(yīng)用,保證了應(yīng)用能夠及時(shí)對(duì)接收到數(shù)據(jù)進(jìn)行處理。
結(jié)合第一方面的第一種可能的實(shí)施方式,在第一方面的第三種可能的實(shí)施方式中,當(dāng)通過(guò)所述定時(shí)任務(wù)喚醒方式喚醒所述應(yīng)用時(shí),所述啟動(dòng)所述應(yīng)用,包括:
在啟動(dòng)所述應(yīng)用的過(guò)程中向所述操作系統(tǒng)注冊(cè)所述定時(shí)任務(wù);
所述通過(guò)預(yù)定喚醒方式,喚醒處于所述掛起狀態(tài)的所述應(yīng)用,包括:
根據(jù)所述定時(shí)任務(wù),周期性喚醒處于所述掛起狀態(tài)的所述應(yīng)用。
為了避免應(yīng)用由于長(zhǎng)時(shí)間處于掛起狀態(tài)而被操作系統(tǒng)殺死或退出,應(yīng)用在啟動(dòng)階段即注冊(cè)定時(shí)任務(wù),當(dāng)處于掛起狀態(tài)時(shí),由操作系統(tǒng)根據(jù)定時(shí)任務(wù)定時(shí)喚醒該應(yīng)用,避免該應(yīng)用被操作系統(tǒng)殺死或退出,從而實(shí)現(xiàn)應(yīng)用的后臺(tái)常駐。
結(jié)合第一方面、第一方面的第一種可能的實(shí)施方式、第一方面的第二種可能的實(shí)施方式或第一方面的第三種可能的實(shí)施方式,在第一方面的第四種可能的實(shí)施方式中,喚醒后的所述應(yīng)用維持第一時(shí)長(zhǎng)的所述后臺(tái)狀態(tài)后重新轉(zhuǎn)換為所述掛起狀態(tài)。
喚醒后的應(yīng)用在維持一段時(shí)間的后臺(tái)狀態(tài)后重新進(jìn)入掛起狀態(tài),不僅保證了應(yīng)用能夠在后臺(tái)運(yùn)行,同時(shí)避免了因應(yīng)用長(zhǎng)時(shí)間占用后臺(tái)而造成的處理資源緊缺。
結(jié)合第一方面的第一種可能的實(shí)施方式、第一方面的第二種可能的實(shí)施方式或第一方面的第三種可能的實(shí)施方式,在第一方面的第五種可能的實(shí)施方式中,所述將所述應(yīng)用從前臺(tái)狀態(tài)轉(zhuǎn)換為所述掛起狀態(tài)之后,所述方法還包括:
接收所述應(yīng)用從前臺(tái)狀態(tài)轉(zhuǎn)換到后臺(tái)狀態(tài)的過(guò)程中發(fā)送的后臺(tái)任務(wù)申請(qǐng),所述后臺(tái)任務(wù)申請(qǐng)用于請(qǐng)求所述操作系統(tǒng)允許所述應(yīng)用維持第二時(shí)長(zhǎng)的所述后臺(tái)狀態(tài);
在所述第二時(shí)長(zhǎng)結(jié)束時(shí),將所述應(yīng)用從所述后臺(tái)狀態(tài)轉(zhuǎn)換為所述掛起狀態(tài)。
其中,應(yīng)用申請(qǐng)第二時(shí)長(zhǎng)的后臺(tái)運(yùn)行時(shí)間,并在即將達(dá)到第二時(shí)長(zhǎng)時(shí)主動(dòng)停止代碼執(zhí)行,這樣,操作系統(tǒng)可以將所述應(yīng)用從后臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)。使得應(yīng)用在獲取額外后臺(tái)運(yùn)行時(shí)間的同時(shí)能夠避免因超出限制被操作系統(tǒng)殺死,從而保證了應(yīng)用在后臺(tái)常駐。
第二方面,提供了一種應(yīng)用狀態(tài)轉(zhuǎn)換裝置,該裝置包括至少一個(gè)單元,該至少一個(gè)單元用于實(shí)現(xiàn)上述第一方面或第一方面的可能的實(shí)施方式中所提供的應(yīng)用狀態(tài)轉(zhuǎn)換方法,該應(yīng)用狀態(tài)轉(zhuǎn)換裝置包括:
啟動(dòng)單元,用于啟動(dòng)所述應(yīng)用,所述應(yīng)用通過(guò)所述操作系統(tǒng)提供的網(wǎng)絡(luò)語(yǔ)音通話voip后臺(tái)接口配置voip功能;
重啟單元,用于當(dāng)確定所述應(yīng)用開(kāi)始從運(yùn)行狀態(tài)向未運(yùn)行狀態(tài)轉(zhuǎn)換時(shí),在所述轉(zhuǎn)換完成前重啟所述應(yīng)用,所述運(yùn)行狀態(tài)包括前臺(tái)狀態(tài)或后臺(tái)狀態(tài);
注冊(cè)單元,在重啟所述應(yīng)用的過(guò)程中向所述操作系統(tǒng)注冊(cè)定時(shí)任務(wù),所述定時(shí)任務(wù)用于指示所述操作系統(tǒng)周期性喚醒處于掛起狀態(tài)的所述應(yīng)用;
喚醒單元,用于根據(jù)所述定時(shí)任務(wù),周期性喚醒處于所述掛起狀態(tài)的所述應(yīng)用,喚醒后的所述應(yīng)用處于所述后臺(tái)狀態(tài)。
通過(guò)預(yù)先為應(yīng)用配置voip功能,使應(yīng)用由運(yùn)行狀態(tài)向未運(yùn)行狀態(tài)轉(zhuǎn)換時(shí)存在一段緩沖期,應(yīng)用利用這段緩沖期自動(dòng)重啟并向操作系統(tǒng)注冊(cè)定時(shí)任務(wù),使得操作系統(tǒng)能夠根據(jù)定時(shí)任務(wù)周期性喚醒重啟后處于掛起狀態(tài)的應(yīng)用,從而實(shí)現(xiàn)了應(yīng)用在后臺(tái)的常駐。
結(jié)合第二方面,在第二方面的第一種可能的實(shí)施方式中,所述裝置,包括:
轉(zhuǎn)換單元,用于當(dāng)檢測(cè)到預(yù)定操作時(shí),將所述應(yīng)用從所述前臺(tái)狀態(tài)轉(zhuǎn)換為所述掛起狀態(tài);
所述喚醒單元,還用于通過(guò)預(yù)定喚醒方式,喚醒處于所述掛起狀態(tài)的所述應(yīng)用;所述預(yù)定喚醒方式包括數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式中的至少一種。
當(dāng)用戶對(duì)移動(dòng)終端進(jìn)行了特定操作,使得應(yīng)用由前臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)時(shí),通過(guò)數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式將應(yīng)用從掛起狀態(tài)中喚醒,實(shí)現(xiàn)了應(yīng)用的后臺(tái)常駐。
結(jié)合第二方面的第一種可能的實(shí)施方式,在第二方面的第二種可能的實(shí)施方式中,當(dāng)通過(guò)所述數(shù)據(jù)推送喚醒方式喚醒所述應(yīng)用時(shí),所述喚醒單元,用于當(dāng)接收到應(yīng)用服務(wù)器向所述應(yīng)用推送的數(shù)據(jù)時(shí),喚醒處于所述掛起狀態(tài)的所述應(yīng)用。
配置有voip功能的應(yīng)用處于掛起狀態(tài)時(shí),終端接管該應(yīng)用于應(yīng)用服務(wù)器之間的連接,當(dāng)接收到應(yīng)用服務(wù)器發(fā)送的數(shù)據(jù)時(shí),即喚醒處于掛起狀態(tài)的應(yīng)用,保證了應(yīng)用能夠及時(shí)對(duì)接收到數(shù)據(jù)進(jìn)行處理。
結(jié)合第二方面的第一種可能的實(shí)施方式,在第二方面的第三種可能的實(shí)施方式中,當(dāng)通過(guò)所述定時(shí)任務(wù)喚醒方式喚醒所述應(yīng)用時(shí);所述啟動(dòng)單元,還用于在啟動(dòng)所述應(yīng)用的過(guò)程中向所述操作系統(tǒng)注冊(cè)所述定時(shí)任務(wù);
所述喚醒單元,還用于根據(jù)所述定時(shí)任務(wù),周期性喚醒處于所述掛起狀態(tài)的所述應(yīng)用。
為了避免應(yīng)用由于長(zhǎng)時(shí)間處于掛起狀態(tài)而被操作系統(tǒng)殺死或退出,應(yīng)用在啟動(dòng)階段即注冊(cè)定時(shí)任務(wù),當(dāng)處于掛起狀態(tài)時(shí),由操作系統(tǒng)根據(jù)定時(shí)任務(wù)定時(shí)喚醒該應(yīng)用,避免該應(yīng)用被操作系統(tǒng)殺死或退出,從而實(shí)現(xiàn)應(yīng)用的后臺(tái)常駐。
結(jié)合第二方面、第二方面的第一種可能的實(shí)施方式、第二方面的第二種可能的實(shí)施方式或第二方面的第三種可能的實(shí)施方式,在第二方面的第四種可能的實(shí)施方式中,喚醒后的所述應(yīng)用維持第一時(shí)長(zhǎng)的所述后臺(tái)狀態(tài)后重新轉(zhuǎn)換為所述掛起狀態(tài)。
喚醒后的應(yīng)用在維持一段時(shí)間的后臺(tái)狀態(tài)后重新進(jìn)入掛起狀態(tài),不僅保證了應(yīng)用能夠在后臺(tái)運(yùn)行,同時(shí)避免了因應(yīng)用長(zhǎng)時(shí)間占用后臺(tái)而造成的處理資源緊缺。
結(jié)合第二方面的第一種可能的實(shí)施方式、第二方面的第二種可能的實(shí)施方式或第二方面的第三種可能的實(shí)施方式,在第二方面的第五種可能的實(shí)施方式中,所述裝置,還包括:
接收單元,用于接收所述應(yīng)用從前臺(tái)狀態(tài)轉(zhuǎn)換到后臺(tái)狀態(tài)的過(guò)程中發(fā)送的后臺(tái)任務(wù)申請(qǐng),所述后臺(tái)任務(wù)申請(qǐng)用于請(qǐng)求所述操作系統(tǒng)允許所述應(yīng)用維持第二時(shí)長(zhǎng)的所述后臺(tái)狀態(tài);
所述轉(zhuǎn)換單元,還用于在所述第二時(shí)長(zhǎng)結(jié)束時(shí),將所述應(yīng)用從所述后臺(tái)狀態(tài)轉(zhuǎn)換為所述掛起狀態(tài)。
其中,應(yīng)用申請(qǐng)第二時(shí)長(zhǎng)的后臺(tái)運(yùn)行時(shí)間,并在即將達(dá)到第二時(shí)長(zhǎng)時(shí)主動(dòng)停止代碼執(zhí)行,這樣,操作系統(tǒng)可以將所述應(yīng)用從后臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)。使得應(yīng)用在獲取額外后臺(tái)運(yùn)行時(shí)間的同時(shí)能夠避免因超出限制被操作系統(tǒng)殺死,從而保證了應(yīng)用在后臺(tái)常駐。
第三方面,提供了一種移動(dòng)終端,所述移動(dòng)終端包括:處理器以及與所述處理器相連的存儲(chǔ)器,其中,所述存儲(chǔ)器用于存儲(chǔ)一個(gè)或者一個(gè)以上的指令,所述指令被配置成由所述處理器執(zhí)行;所述處理器通過(guò)執(zhí)行所述存儲(chǔ)器中的指令來(lái)實(shí)現(xiàn)第一方面或第一方面的可能的實(shí)施方式中所提供的應(yīng)用狀態(tài)轉(zhuǎn)換方法,所述處理器,用于:
啟動(dòng)所述應(yīng)用,所述應(yīng)用通過(guò)所述操作系統(tǒng)提供的voip后臺(tái)接口配置voip功能;
當(dāng)確定所述應(yīng)用開(kāi)始從運(yùn)行狀態(tài)向未運(yùn)行狀態(tài)轉(zhuǎn)換時(shí),在所述轉(zhuǎn)換完成前重啟所述應(yīng)用,所述運(yùn)行狀態(tài)包括前臺(tái)狀態(tài)或后臺(tái)狀態(tài);
在重啟所述應(yīng)用的過(guò)程中向所述操作系統(tǒng)注冊(cè)定時(shí)任務(wù),所述定時(shí)任務(wù)用于指示所述操作系統(tǒng)周期性喚醒處于掛起狀態(tài)的所述應(yīng)用;
根據(jù)所述定時(shí)任務(wù),周期性喚醒處于所述掛起狀態(tài)的所述應(yīng)用,喚醒后的所述應(yīng)用處于后臺(tái)狀態(tài)。
通過(guò)預(yù)先為應(yīng)用配置voip功能,使應(yīng)用由運(yùn)行狀態(tài)向未運(yùn)行狀態(tài)轉(zhuǎn)換時(shí)存在一段緩沖期,應(yīng)用利用這段緩沖期自動(dòng)重啟并向操作系統(tǒng)注冊(cè)定時(shí)任務(wù),使得操作系統(tǒng)能夠根據(jù)定時(shí)任務(wù)周期性喚醒重啟后處于掛起狀態(tài)的應(yīng)用,從而實(shí)現(xiàn)了應(yīng)用在后臺(tái)的常駐。
結(jié)合第三方面,在第三方面的第一種可能的實(shí)施方式中,當(dāng)所述應(yīng)用處于所述前臺(tái)狀態(tài)時(shí),所述處理器還用于:
當(dāng)檢測(cè)到預(yù)定操作時(shí),將所述應(yīng)用從所述前臺(tái)狀態(tài)轉(zhuǎn)換為所述掛起狀態(tài);
通過(guò)預(yù)定喚醒方式,喚醒處于所述掛起狀態(tài)的所述應(yīng)用;所述預(yù)定喚醒方式包括數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式中的至少一種。
當(dāng)用戶對(duì)移動(dòng)終端進(jìn)行了特定操作,使得應(yīng)用由前臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)時(shí),通過(guò)數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式將應(yīng)用從掛起狀態(tài)中喚醒,實(shí)現(xiàn)了應(yīng)用的后臺(tái)常駐。
結(jié)合第三方面的第一種可能的實(shí)施方式,在第三方面的第二種可能的實(shí)施方式中,當(dāng)通過(guò)所述數(shù)據(jù)推送喚醒方式喚醒所述應(yīng)用時(shí),所述處理器,用于:
當(dāng)接收到應(yīng)用服務(wù)器向所述應(yīng)用推送的數(shù)據(jù)時(shí),喚醒處于所述掛起狀態(tài)的所述應(yīng)用。
配置有voip功能的應(yīng)用處于掛起狀態(tài)時(shí),終端接管該應(yīng)用于應(yīng)用服務(wù)器之間的連接,當(dāng)接收到應(yīng)用服務(wù)器發(fā)送的數(shù)據(jù)時(shí),即喚醒處于掛起狀態(tài)的應(yīng)用,保證了應(yīng)用能夠及時(shí)對(duì)接收到數(shù)據(jù)進(jìn)行處理。
結(jié)合第三方面的第一種可能的實(shí)施方式,在第三方面的第三種可能的實(shí)施方式中,當(dāng)通過(guò)所述定時(shí)任務(wù)喚醒方式喚醒所述應(yīng)用時(shí),所述處理器,用于:
在啟動(dòng)所述應(yīng)用的過(guò)程中向所述操作系統(tǒng)注冊(cè)所述定時(shí)任務(wù);
所述處理器,還用于:
根據(jù)所述定時(shí)任務(wù),周期性喚醒處于所述掛起狀態(tài)的所述應(yīng)用。
為了避免應(yīng)用由于長(zhǎng)時(shí)間處于掛起狀態(tài)而被操作系統(tǒng)殺死或退出,應(yīng)用在啟動(dòng)階段即注冊(cè)定時(shí)任務(wù),當(dāng)處于掛起狀態(tài)時(shí),由操作系統(tǒng)根據(jù)定時(shí)任務(wù)定時(shí)喚醒該應(yīng)用,避免該應(yīng)用被操作系統(tǒng)殺死或退出,從而實(shí)現(xiàn)應(yīng)用的后臺(tái)常駐。
結(jié)合第三方面、第三方面的第一種可能的實(shí)施方式、第三方面的第二種可 能的實(shí)施方式或第三方面的第三種可能的實(shí)施方式,在第三方面的第四種可能的實(shí)施方式中,喚醒后的所述應(yīng)用維持第一時(shí)長(zhǎng)的所述后臺(tái)狀態(tài)后重新轉(zhuǎn)換為所述掛起狀態(tài)。
喚醒后的應(yīng)用在維持一段時(shí)間的后臺(tái)狀態(tài)后重新進(jìn)入掛起狀態(tài),不僅保證了應(yīng)用能夠在后臺(tái)運(yùn)行,同時(shí)避免了因應(yīng)用長(zhǎng)時(shí)間占用后臺(tái)而造成的處理資源緊缺。
結(jié)合第三方面的第一種可能的實(shí)施方式、第三方面的第二種可能的實(shí)施方式或第三方面的第三種可能的實(shí)施方式,在第三方面的第五種可能的實(shí)施方式中,所述將所述應(yīng)用從前臺(tái)狀態(tài)轉(zhuǎn)換為所述掛起狀態(tài)之后,所述處理器還用于:
接收所述應(yīng)用從前臺(tái)狀態(tài)轉(zhuǎn)換到后臺(tái)狀態(tài)的過(guò)程中發(fā)送的后臺(tái)任務(wù)申請(qǐng),所述后臺(tái)任務(wù)申請(qǐng)用于請(qǐng)求所述操作系統(tǒng)允許所述應(yīng)用維持第二時(shí)長(zhǎng)的所述后臺(tái)狀態(tài);
在所述第二時(shí)長(zhǎng)結(jié)束時(shí),將所述應(yīng)用從所述后臺(tái)狀態(tài)轉(zhuǎn)換為所述掛起狀態(tài)。
其中,應(yīng)用申請(qǐng)第二時(shí)長(zhǎng)的后臺(tái)運(yùn)行時(shí)間,并在即將達(dá)到第二時(shí)長(zhǎng)時(shí)主動(dòng)停止代碼執(zhí)行,這樣,操作系統(tǒng)可以將所述應(yīng)用從后臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)。使得應(yīng)用在獲取額外后臺(tái)運(yùn)行時(shí)間的同時(shí)能夠避免因超出限制被操作系統(tǒng)殺死,從而保證了應(yīng)用在后臺(tái)常駐。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹。
圖1是本發(fā)明實(shí)施例中應(yīng)用的前臺(tái)狀態(tài)、后臺(tái)狀態(tài)、掛起狀態(tài)和未運(yùn)行狀態(tài)之間轉(zhuǎn)換關(guān)系的示意圖;
圖2a示出了本發(fā)明實(shí)施例提供的一種應(yīng)用狀態(tài)轉(zhuǎn)換方法流程示意圖;
圖2b是圖2a所示應(yīng)用狀態(tài)轉(zhuǎn)換方法中不同狀態(tài)之間轉(zhuǎn)換關(guān)系的示意圖;
圖3a示出了本發(fā)明實(shí)施例提供的另一種應(yīng)用狀態(tài)轉(zhuǎn)換方法的流程示意圖;
圖3b示出了本發(fā)明實(shí)施例提供的再一種應(yīng)用狀態(tài)轉(zhuǎn)換方法的流程示意圖;
圖4a是利用apns推送服務(wù)實(shí)現(xiàn)消息推送的示意圖;
圖4b是利用本地推送服務(wù)實(shí)現(xiàn)消息推送的示意圖;
圖5示出了本發(fā)明實(shí)施例提供的一種應(yīng)用狀態(tài)轉(zhuǎn)換裝置的框圖;
圖6示出了本發(fā)明實(shí)施例提供的另一種應(yīng)用狀態(tài)轉(zhuǎn)換裝置的框圖;
圖7示出了本發(fā)明實(shí)施例提供的移動(dòng)終端的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
為了方便理解,下面對(duì)本發(fā)明實(shí)施例中涉及的名詞進(jìn)行解釋。
1、前臺(tái)狀態(tài):指示應(yīng)用在操作系統(tǒng)前臺(tái)運(yùn)行的狀態(tài)。通常情況下,用戶啟動(dòng)系統(tǒng)中的應(yīng)用后,該應(yīng)用即處于前臺(tái)狀態(tài)。
2、后臺(tái)狀態(tài):指示應(yīng)用處于操作系統(tǒng)后臺(tái)且正在運(yùn)行的狀態(tài),處于后臺(tái)狀態(tài)下的應(yīng)用在系統(tǒng)后臺(tái)執(zhí)行應(yīng)用代碼。
3、掛起狀態(tài):指示應(yīng)用處于操作系統(tǒng)后臺(tái)但未執(zhí)行代碼的狀態(tài)。
4、未運(yùn)行狀態(tài):指示應(yīng)用未啟動(dòng)或在運(yùn)行過(guò)程中被系統(tǒng)終止運(yùn)行的狀態(tài)。
5、voip后臺(tái)任務(wù)接口:ios提供的一種后臺(tái)技術(shù)接口。使用該接口的應(yīng)用進(jìn)入ios后臺(tái)后處于掛起狀態(tài),由ios接管ios設(shè)備與應(yīng)用服務(wù)器之間的連接,當(dāng)ios設(shè)備接收到應(yīng)用服務(wù)器發(fā)送給該應(yīng)用的數(shù)據(jù)時(shí),ios將掛起狀態(tài)下的應(yīng)用喚醒,使其對(duì)接收到的數(shù)據(jù)進(jìn)行處理。
6、后臺(tái)任務(wù)申請(qǐng)接口:ios提供的一種后臺(tái)技術(shù)接口。使用該接口的應(yīng)用可以向ios申請(qǐng)一定時(shí)長(zhǎng)的后臺(tái)運(yùn)行時(shí)間,通常情況下,應(yīng)用通過(guò)使用該接口最多申請(qǐng)3分鐘的后臺(tái)運(yùn)行時(shí)間。
請(qǐng)參考圖1,其示出了應(yīng)用的前臺(tái)狀態(tài)、后臺(tái)狀態(tài)、掛起狀態(tài)和未運(yùn)行狀態(tài)之間的轉(zhuǎn)換關(guān)系。為了方便描述,本實(shí)施例中以操作系統(tǒng)為ios為例進(jìn)行說(shuō)明,并不對(duì)本發(fā)明構(gòu)成限定。
當(dāng)用戶點(diǎn)擊應(yīng)用圖標(biāo)時(shí),ios即啟動(dòng)該應(yīng)用圖標(biāo)對(duì)應(yīng)的應(yīng)用,相應(yīng)的,該應(yīng)用即處于前臺(tái)狀態(tài)。
當(dāng)用戶執(zhí)行預(yù)定操作時(shí),比如按下ios設(shè)備的主頁(yè)(home)鍵時(shí),處于前臺(tái)狀態(tài)的應(yīng)用轉(zhuǎn)換為掛起狀態(tài)(圖1中的轉(zhuǎn)換101),不再執(zhí)行應(yīng)用代碼;當(dāng)用戶重新點(diǎn)擊該應(yīng)用的應(yīng)用圖標(biāo)時(shí),該應(yīng)用重新由掛起狀態(tài)轉(zhuǎn)換為前臺(tái)狀態(tài)。
對(duì)于voip一類的應(yīng)用,為了使應(yīng)用在操作系統(tǒng)后臺(tái)時(shí)仍能運(yùn)行,當(dāng)ios設(shè)備的home鍵被按下時(shí),應(yīng)用即從前臺(tái)狀態(tài)轉(zhuǎn)換為后臺(tái)狀態(tài)(即圖1中的轉(zhuǎn)換102);同時(shí)為了避免應(yīng)用處于長(zhǎng)時(shí)間的后臺(tái)狀態(tài),當(dāng)應(yīng)用維持后臺(tái)狀態(tài)達(dá)到一定時(shí)長(zhǎng)后,應(yīng)用自動(dòng)由后臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)(即圖1中的轉(zhuǎn)換103)。
由于代碼缺陷等原因,處于前臺(tái)狀態(tài)的應(yīng)用會(huì)崩潰而轉(zhuǎn)為未運(yùn)行狀態(tài)(即圖1中的轉(zhuǎn)換104);相似的,處于后臺(tái)狀態(tài)的應(yīng)用在被ios殺死或退出時(shí)也會(huì)轉(zhuǎn)為未運(yùn)行狀態(tài)(即圖1中的轉(zhuǎn)換105)。應(yīng)用進(jìn)入未運(yùn)行狀態(tài)后,若用戶未手動(dòng)點(diǎn)擊應(yīng)用圖標(biāo)重啟應(yīng)用,該應(yīng)用將保持未運(yùn)行狀態(tài),無(wú)法實(shí)現(xiàn)應(yīng)用在后臺(tái)常駐,對(duì)于一些需要進(jìn)行后臺(tái)推送的應(yīng)用來(lái)說(shuō),將影響推送消息的即時(shí)性。
為了實(shí)現(xiàn)應(yīng)用在操作系統(tǒng)后臺(tái)常駐,本發(fā)明實(shí)施例提供了一種應(yīng)用狀態(tài)轉(zhuǎn)換方法,通過(guò)該方法能夠使應(yīng)用在后臺(tái)自動(dòng)重啟,實(shí)現(xiàn)應(yīng)用的后臺(tái)常駐,下面采用示例性的實(shí)施例進(jìn)行說(shuō)明。
請(qǐng)參考圖2a,其示出了本發(fā)明實(shí)施例提供的一種應(yīng)用狀態(tài)轉(zhuǎn)換方法的流程示意圖。本實(shí)施例以該方法應(yīng)用于安裝有ios的設(shè)備為例進(jìn)行說(shuō)明,該方法包括:
步驟202,啟動(dòng)應(yīng)用,該應(yīng)用通過(guò)操作系統(tǒng)提供的voip后臺(tái)接口配置voip功能。
在配置ios應(yīng)用的工程文件時(shí),通過(guò)使用ios提供的voip后臺(tái)接口配置voip功能,應(yīng)用啟動(dòng)時(shí)即開(kāi)啟voip。
步驟204,當(dāng)確定該應(yīng)用開(kāi)始從運(yùn)行狀態(tài)向未運(yùn)行狀態(tài)轉(zhuǎn)換時(shí),在轉(zhuǎn)換完成前重啟該應(yīng)用,運(yùn)行狀態(tài)包括前臺(tái)狀態(tài)或后臺(tái)狀態(tài)。
開(kāi)啟voip的應(yīng)用在從運(yùn)行狀態(tài)轉(zhuǎn)換為未運(yùn)行狀態(tài)時(shí),存在一定時(shí)長(zhǎng)的緩沖期,例如,該應(yīng)用需要2到3秒(可以稱為緩沖期)才能從運(yùn)行狀態(tài)轉(zhuǎn)換到未運(yùn)行狀態(tài),操作系統(tǒng)可以利用該緩沖期自動(dòng)重啟應(yīng)用。
步驟206,在重啟應(yīng)用的過(guò)程中向操作系統(tǒng)注冊(cè)定時(shí)任務(wù),定時(shí)任務(wù)用于指示操作系統(tǒng)周期性喚醒處于掛起狀態(tài)的應(yīng)用。
步驟208,根據(jù)該定時(shí)任務(wù),周期性喚醒處于掛起狀態(tài)的應(yīng)用,喚醒后的應(yīng)用處于后臺(tái)狀態(tài)。
ios根據(jù)應(yīng)用注冊(cè)的定時(shí)任務(wù),保證在定時(shí)任務(wù)指示的周期內(nèi)喚醒處于掛起 狀態(tài)的應(yīng)用,使其進(jìn)入后臺(tái)狀態(tài)。進(jìn)入后臺(tái)狀態(tài)的應(yīng)用維持一段時(shí)間后,重新進(jìn)入掛起狀態(tài)。
如圖2b所示,在圖1所示狀態(tài)轉(zhuǎn)換的基礎(chǔ)上,通過(guò)利用進(jìn)入未運(yùn)行狀態(tài)之前的緩沖期重啟應(yīng)用,使其進(jìn)入掛起狀態(tài)(即圖2b中的轉(zhuǎn)換106);并根據(jù)重啟過(guò)程中注冊(cè)的定時(shí)任務(wù)周期性喚醒處于掛起狀態(tài)的應(yīng)用(即圖2b中的轉(zhuǎn)換107),從而實(shí)現(xiàn)應(yīng)用在后臺(tái)的常駐。
綜上所述,本實(shí)施例提供的應(yīng)用狀態(tài)轉(zhuǎn)換方法,通過(guò)利用應(yīng)用從運(yùn)行狀態(tài)進(jìn)入未運(yùn)行狀態(tài)之前的緩沖期重啟應(yīng)用,使其進(jìn)入掛起狀態(tài),并根據(jù)重啟過(guò)程中注冊(cè)的定時(shí)任務(wù)周期性喚醒處于掛起狀態(tài)的應(yīng)用;解決了應(yīng)用由于被ios殺死或退出而進(jìn)入未運(yùn)行狀態(tài),導(dǎo)致應(yīng)用無(wú)法在后臺(tái)常駐的問(wèn)題;達(dá)到了利用自動(dòng)重啟和定時(shí)喚醒機(jī)制,實(shí)現(xiàn)應(yīng)用在后臺(tái)常駐的效果。
當(dāng)用戶執(zhí)行某些操作使得應(yīng)用由前臺(tái)狀態(tài)進(jìn)入掛起狀態(tài)時(shí)(比如點(diǎn)擊home鍵),若該應(yīng)用長(zhǎng)時(shí)間處于掛起狀態(tài),操作系統(tǒng)會(huì)自動(dòng)將其殺死或退出,導(dǎo)致應(yīng)用無(wú)法在后臺(tái)常駐。在圖2a所示實(shí)施例的基礎(chǔ)上,可以通過(guò)定時(shí)喚醒機(jī)制周期性喚醒處于掛起狀態(tài)的應(yīng)用,使其在后臺(tái)常駐,下面采用一個(gè)實(shí)施例進(jìn)行說(shuō)明。
請(qǐng)參考圖3a,其示出了本發(fā)明實(shí)施例提供的另一種應(yīng)用狀態(tài)轉(zhuǎn)換方法的流程示意圖。本實(shí)施例以該方法應(yīng)用于安裝有ios的設(shè)備為例進(jìn)行說(shuō)明,該方法包括:
步驟301,啟動(dòng)應(yīng)用,該應(yīng)用通過(guò)操作系統(tǒng)提供的voip后臺(tái)接口配置voip功能。
在配置ios應(yīng)用的工程文件時(shí),通過(guò)使用ios提供的voip后臺(tái)接口配置voip功能,應(yīng)用啟動(dòng)時(shí)即開(kāi)啟voip。需要說(shuō)明的是,配置有voip功能的應(yīng)用并不局限于voip類應(yīng)用,該應(yīng)用也可以為具有消息推送功能的應(yīng)用,比如郵件應(yīng)用。
該應(yīng)用啟動(dòng)后即以前臺(tái)狀態(tài)運(yùn)行,并在接收到應(yīng)用服務(wù)器發(fā)送的數(shù)據(jù)時(shí),對(duì)該數(shù)據(jù)進(jìn)行處理。比如,以該應(yīng)用為郵件應(yīng)用為例,當(dāng)用戶啟動(dòng)ios設(shè)備中的郵件應(yīng)用時(shí),郵件應(yīng)用即在前臺(tái)運(yùn)行,當(dāng)郵件服務(wù)器向該郵件應(yīng)用推送郵件時(shí),處于前臺(tái)狀態(tài)的郵件應(yīng)用對(duì)接收到的郵件進(jìn)行顯示。
步驟302,當(dāng)檢測(cè)到預(yù)定操作時(shí),將應(yīng)用從前臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)。
ios設(shè)備中通常安裝有較多的應(yīng)用,用戶切換不同的應(yīng)用時(shí),當(dāng)前處于前臺(tái)的應(yīng)用需要被移至后臺(tái);并且,為了避免大量應(yīng)用在后臺(tái)運(yùn)行影響ios的處理性能,被移至后臺(tái)的應(yīng)用需要轉(zhuǎn)換為掛起狀態(tài)。因此,當(dāng)檢測(cè)到預(yù)定操作時(shí),比如檢測(cè)到用戶對(duì)home鍵的按壓操作,應(yīng)用即由前臺(tái)狀態(tài)進(jìn)入掛起狀態(tài)。
步驟303,通過(guò)預(yù)定喚醒方式,喚醒處于掛起狀態(tài)的應(yīng)用;預(yù)定喚醒方式包括數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式中的至少一種。
處于掛起狀態(tài)的應(yīng)用在后臺(tái)并不運(yùn)行代碼,無(wú)法實(shí)現(xiàn)真正的后臺(tái)常駐,因此,ios需要喚醒掛起狀態(tài)下的應(yīng)用,使其進(jìn)入后臺(tái)狀態(tài),從而實(shí)現(xiàn)真正的后臺(tái)常駐。
在一種可能的實(shí)施方式中,由于應(yīng)用開(kāi)啟了voip,在掛起狀態(tài)下,ios將接管該應(yīng)用與應(yīng)用服務(wù)器之間的連接。當(dāng)ios接收到應(yīng)用服務(wù)器向該應(yīng)用發(fā)送的數(shù)據(jù)時(shí),ios即喚醒處于掛起狀態(tài)的應(yīng)用。喚醒后的應(yīng)用維持第一時(shí)長(zhǎng)的后臺(tái)狀態(tài),并在后臺(tái)狀態(tài)下運(yùn)行代碼并處理接收到的數(shù)據(jù),當(dāng)達(dá)到第一時(shí)長(zhǎng)時(shí),該應(yīng)用重新轉(zhuǎn)換為掛起狀態(tài)。比如,第一時(shí)長(zhǎng)可以為10秒,即應(yīng)用被ios喚醒后,維持10秒后臺(tái)狀態(tài),并在達(dá)到10秒后重新進(jìn)入掛起狀態(tài)。需要說(shuō)明的是,為了避免ios頻繁喚醒應(yīng)用,ios需要在單位時(shí)間內(nèi)對(duì)采用數(shù)據(jù)推送喚醒方式喚醒應(yīng)用的次數(shù)進(jìn)行限制,比如,可以設(shè)置5分鐘內(nèi)喚醒應(yīng)用的次數(shù)至多為15次,當(dāng)超出該限制時(shí),ios即殺死該應(yīng)用。
在另一種可能的實(shí)施方式中,應(yīng)用在啟動(dòng)階段即向ios注冊(cè)定時(shí)任務(wù),該定時(shí)任務(wù)用于指示ios周期性喚醒處于掛起狀態(tài)的應(yīng)用。相應(yīng)的,ios根據(jù)應(yīng)用注冊(cè)的定時(shí)任務(wù),周期性的將掛起狀態(tài)下的應(yīng)用喚醒。喚醒后的應(yīng)用維持第一時(shí)長(zhǎng)的后臺(tái)狀態(tài),并在達(dá)到第一時(shí)長(zhǎng)時(shí),重新轉(zhuǎn)換為掛起狀態(tài)。比如,該定時(shí)任務(wù)的定時(shí)任務(wù)周期可以被設(shè)置為600秒,第一時(shí)長(zhǎng)可以為10秒,即ios保證在600內(nèi)秒喚醒一次處于掛起狀態(tài)的應(yīng)用,喚醒后的應(yīng)用維持10秒后臺(tái)狀態(tài)后重新進(jìn)入掛起狀態(tài)。采用定時(shí)喚醒的方式喚醒應(yīng)用,能夠有效避免應(yīng)用因長(zhǎng)時(shí)間處于掛起狀態(tài)而被ios殺死或退出。
需要說(shuō)明的一點(diǎn)是,ios可以根據(jù)中央處理器(英文:centralprocessingunit;簡(jiǎn)稱:cpu)或內(nèi)存的使用率確定相鄰兩次喚醒之間的時(shí)間間隔,即相鄰兩次喚醒之間的時(shí)間間隔小于定時(shí)任務(wù)周期,且不為定值。比如,以定時(shí)任務(wù)的定時(shí)任務(wù)周期為600秒為例,當(dāng)cpu或內(nèi)存的使用率大于閾值時(shí),ios可以在距 上次喚醒580秒后再次喚醒應(yīng)用;當(dāng)cpu或內(nèi)存的使用率小于閾值時(shí),ios可以在距上次喚醒500秒后再次喚醒應(yīng)用。
需要說(shuō)明的另一點(diǎn)是,為了避免ios頻繁喚醒應(yīng)用,ios需要對(duì)定時(shí)任務(wù)的定時(shí)任務(wù)周期進(jìn)行限制,比如,可以限制定時(shí)任務(wù)周期至少為600秒,若注冊(cè)的定時(shí)任務(wù)的定時(shí)任務(wù)周期大于等于600秒,則定時(shí)任務(wù)注冊(cè)成功;若注冊(cè)的定時(shí)任務(wù)的定時(shí)任務(wù)周期小于600秒,則定時(shí)任務(wù)注冊(cè)失敗。
步驟304,當(dāng)確定應(yīng)用開(kāi)始從運(yùn)行狀態(tài)向未運(yùn)行狀態(tài)轉(zhuǎn)換時(shí),在轉(zhuǎn)換完成前重啟應(yīng)用,運(yùn)行狀態(tài)包括前臺(tái)狀態(tài)或后臺(tái)狀態(tài)。
導(dǎo)致應(yīng)用進(jìn)入未運(yùn)行狀態(tài)的原因多種多樣,比如,處于前臺(tái)狀態(tài)的應(yīng)用由于代碼缺陷導(dǎo)致崩潰時(shí),應(yīng)用會(huì)由前臺(tái)狀態(tài)轉(zhuǎn)化為未運(yùn)行狀態(tài);又比如,當(dāng)處于后臺(tái)狀態(tài)的應(yīng)用被頻繁喚醒時(shí),ios將該應(yīng)用殺死或退出,使得應(yīng)用由后臺(tái)狀態(tài)進(jìn)入位運(yùn)行狀態(tài)。需要說(shuō)明的是,本發(fā)明實(shí)施例并不對(duì)用戶手動(dòng)退出應(yīng)用使應(yīng)用進(jìn)入未運(yùn)行狀態(tài)的情況進(jìn)行討論。
對(duì)于開(kāi)啟voip的應(yīng)用,應(yīng)用在轉(zhuǎn)換為未運(yùn)行狀態(tài)之前,會(huì)經(jīng)過(guò)一定時(shí)長(zhǎng)的緩沖期,本實(shí)施例中,應(yīng)用即利用該緩沖期進(jìn)行重啟,并在重啟后進(jìn)入掛起狀態(tài)。
步驟305,在重啟應(yīng)用的過(guò)程中向操作系統(tǒng)注冊(cè)定時(shí)任務(wù);定時(shí)任務(wù)用于指示操作系統(tǒng)周期性喚醒處于掛起狀態(tài)的應(yīng)用。
應(yīng)用在重啟過(guò)程中,向ios注冊(cè)定時(shí)任務(wù),指示ios周期性喚醒處于掛起狀態(tài)的應(yīng)用。若注冊(cè)的定時(shí)任務(wù)的定時(shí)任務(wù)周期達(dá)到預(yù)設(shè)時(shí)長(zhǎng),則注冊(cè)成功;若注冊(cè)的定時(shí)任務(wù)的定時(shí)任務(wù)周期未達(dá)到預(yù)設(shè)時(shí)長(zhǎng),則注冊(cè)失敗,其中該定時(shí)任務(wù)周期可以為600秒。
步驟306,根據(jù)定時(shí)任務(wù),周期性喚醒處于掛起狀態(tài)的應(yīng)用;喚醒后的應(yīng)用處于后臺(tái)狀態(tài)。
應(yīng)用成功注冊(cè)定時(shí)任務(wù)后,操作系統(tǒng)即根據(jù)定時(shí)任務(wù)設(shè)置的定時(shí)任務(wù)周期,周期性的喚醒處于掛起狀態(tài)的應(yīng)用。喚醒后的應(yīng)用維持第一時(shí)長(zhǎng)的后臺(tái)狀態(tài),并在達(dá)到第一時(shí)長(zhǎng)時(shí),重新轉(zhuǎn)換為掛起狀態(tài)。
綜上所述,本實(shí)施例提供的應(yīng)用狀態(tài)轉(zhuǎn)換方法,通過(guò)利用應(yīng)用從運(yùn)行狀態(tài)進(jìn)入未運(yùn)行狀態(tài)之前的緩沖期重啟應(yīng)用,使其進(jìn)入掛起狀態(tài),并根據(jù)重啟過(guò)程中注冊(cè)的定時(shí)任務(wù)周期性喚醒處于掛起狀態(tài)的應(yīng)用;解決了應(yīng)用由于被ios殺 死或退出而進(jìn)入未運(yùn)行狀態(tài),導(dǎo)致應(yīng)用無(wú)法在后臺(tái)常駐的問(wèn)題;達(dá)到了利用自動(dòng)重啟和定時(shí)喚醒機(jī)制,實(shí)現(xiàn)應(yīng)用在后臺(tái)常駐的效果。
本實(shí)施例中,通過(guò)預(yù)先對(duì)應(yīng)用的工程文件進(jìn)行配置,并設(shè)置喚醒機(jī)制,當(dāng)應(yīng)用處于掛起狀態(tài)時(shí),ios能夠通過(guò)數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式喚醒應(yīng)用;當(dāng)應(yīng)用進(jìn)入未運(yùn)行狀態(tài)時(shí),能夠通過(guò)自動(dòng)重啟機(jī)制實(shí)現(xiàn)應(yīng)用自動(dòng)重啟,并在重啟后由ios定時(shí)喚醒進(jìn)入后臺(tái)狀態(tài),實(shí)現(xiàn)真正意義上的應(yīng)用后臺(tái)常駐。
在圖3a所示實(shí)施例的基礎(chǔ)上,當(dāng)ios指示應(yīng)用由前臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)時(shí),該應(yīng)用可以通過(guò)ios提供的后臺(tái)任務(wù)申請(qǐng)接口,申請(qǐng)額外的后臺(tái)運(yùn)行時(shí)間,從而進(jìn)一步延長(zhǎng)應(yīng)用處于后臺(tái)狀態(tài)的時(shí)間。如圖3b所示,上述步驟302之后,還可以包括如下步驟。
步驟307,接收應(yīng)用從前臺(tái)狀態(tài)轉(zhuǎn)換到后臺(tái)狀態(tài)的過(guò)程中發(fā)送的后臺(tái)任務(wù)申請(qǐng),后臺(tái)任務(wù)申請(qǐng)用于請(qǐng)求操作系統(tǒng)允許該應(yīng)用維持第二時(shí)長(zhǎng)的后臺(tái)狀態(tài)。
當(dāng)ios設(shè)備的home鍵被按下時(shí),處于前臺(tái)狀態(tài)的應(yīng)用即通過(guò)后臺(tái)任務(wù)申請(qǐng)接口向ios發(fā)送后臺(tái)任務(wù)申請(qǐng),申請(qǐng)維持第二時(shí)長(zhǎng)的后臺(tái)狀態(tài),其中,該第二時(shí)長(zhǎng)可以為3分鐘。
通過(guò)這一后臺(tái)任務(wù)申請(qǐng)機(jī)制,ios設(shè)備的home鍵被按下后,應(yīng)用不會(huì)直接從前臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài),而是能夠繼續(xù)維持一段時(shí)間的后臺(tái)狀態(tài),并在后臺(tái)狀態(tài)下執(zhí)行代碼并對(duì)接收到的數(shù)據(jù)進(jìn)行處理,能夠提高應(yīng)用接收并處理數(shù)據(jù)的時(shí)效性。
需要說(shuō)明的是,在home鍵被按下時(shí)向ios發(fā)送后臺(tái)任務(wù)申請(qǐng)這一機(jī)制需要預(yù)先在應(yīng)用的工程文件中進(jìn)行配置。
步驟308,在第二時(shí)長(zhǎng)結(jié)束時(shí),將該應(yīng)用從后臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài)。
為了避免應(yīng)用因超出后臺(tái)限制而被ios殺死,應(yīng)用在home鍵被按下后的第二時(shí)長(zhǎng)內(nèi)維持后臺(tái)狀態(tài)并運(yùn)行代碼,并在接近第二時(shí)長(zhǎng)結(jié)束時(shí),自動(dòng)停止運(yùn)行代碼,ios檢測(cè)到應(yīng)用停止運(yùn)行代碼后,使應(yīng)用進(jìn)入掛起狀態(tài),防止因超出后臺(tái)限制被ios殺死或退出。需要說(shuō)明的是,應(yīng)用主動(dòng)停止運(yùn)行代碼可以通過(guò)調(diào)用ios提供的相應(yīng)接口來(lái)實(shí)現(xiàn),本實(shí)施例在此不再贅述。
本實(shí)施例中,應(yīng)用由前臺(tái)狀態(tài)進(jìn)入后臺(tái)狀態(tài)的過(guò)程中,通過(guò)后臺(tái)任務(wù)申請(qǐng)接口申請(qǐng)額外的后臺(tái)運(yùn)行時(shí)間,進(jìn)一步延長(zhǎng)了應(yīng)用處于后臺(tái)狀態(tài)的時(shí)間,對(duì)于 即時(shí)性要求較高的應(yīng)用來(lái)說(shuō),能夠提高應(yīng)用接收并處理數(shù)據(jù)的時(shí)效性。
上述實(shí)施例提供的應(yīng)用狀態(tài)轉(zhuǎn)換方法,可以用于有消息推送需求的應(yīng)用中,下面以該應(yīng)用狀態(tài)轉(zhuǎn)換方法用于郵件應(yīng)用為例進(jìn)行示意性說(shuō)明。
如圖4a所示,當(dāng)ios中的郵件應(yīng)用未通過(guò)上述方法進(jìn)行預(yù)先配置時(shí),郵件服務(wù)器41向ios設(shè)備42中的郵件應(yīng)用推送消息時(shí),需要先將消息發(fā)送至蘋(píng)果推送通知服務(wù)(英文:applepushnotificationservice;簡(jiǎn)稱:apns)服務(wù)器43,由apns服務(wù)器43解析出該消息中攜帶的ios設(shè)備的設(shè)備信息,再將該消息轉(zhuǎn)發(fā)到對(duì)應(yīng)的ios設(shè)備42上,并最終推送到郵件應(yīng)用,顯然,使用apns推送服務(wù)接收推送的消息時(shí)需要依賴apns服務(wù)器。
若不采用apns推送服務(wù)而采用本地推送服務(wù)接收消息,則無(wú)需依賴apns服務(wù)器,但要求ios設(shè)備中的郵件應(yīng)用常駐后臺(tái),而運(yùn)用上述實(shí)施例提供的應(yīng)用狀態(tài)轉(zhuǎn)換方法正可以實(shí)現(xiàn)應(yīng)用后臺(tái)常駐。
在應(yīng)用工程文件配置階段,開(kāi)發(fā)人員為郵件應(yīng)用配置應(yīng)用工程文件時(shí),開(kāi)啟voip功能;在應(yīng)用啟動(dòng)階段,郵件應(yīng)用向ios注冊(cè)定時(shí)任務(wù),指示ios周期性喚醒應(yīng)郵件應(yīng)用,避免長(zhǎng)時(shí)間處于掛起狀態(tài)郵件應(yīng)用被ios殺死后退出;郵件應(yīng)用在前臺(tái)運(yùn)行過(guò)程中,當(dāng)用戶按壓home鍵時(shí),郵件應(yīng)用調(diào)用ios提供的后臺(tái)任務(wù)申請(qǐng)接口維持3分鐘(第二時(shí)長(zhǎng))的額外后臺(tái)狀態(tài),并在接近3分鐘時(shí)停止執(zhí)行代碼,ios檢測(cè)到應(yīng)用停止執(zhí)行代碼時(shí),將應(yīng)用轉(zhuǎn)換到掛起狀態(tài);在掛起狀態(tài)下,由于郵件應(yīng)用開(kāi)啟voip功能,ios接管郵件應(yīng)用與郵件服務(wù)器之間的連接,并在接收到郵件服務(wù)器推送的消息時(shí),喚醒郵件應(yīng)用處理推送的消息,實(shí)現(xiàn)郵件應(yīng)用的后臺(tái)常駐。
當(dāng)郵件應(yīng)用由前臺(tái)狀態(tài)或后臺(tái)狀態(tài)進(jìn)入未運(yùn)行狀態(tài)時(shí),郵件應(yīng)用利用進(jìn)入未運(yùn)行狀態(tài)之前的緩沖期重啟應(yīng)用,并在重啟時(shí)向ios注冊(cè)定時(shí)任務(wù)。重啟后的郵件應(yīng)用在ios后臺(tái)處于掛起狀態(tài),直至ios按照定時(shí)任務(wù)周期性將其喚醒,進(jìn)入后臺(tái)狀態(tài),從而實(shí)現(xiàn)應(yīng)用的后臺(tái)常駐。
如圖4b所示,通過(guò)上述實(shí)施例提供的應(yīng)用狀態(tài)轉(zhuǎn)換方法可以實(shí)現(xiàn)郵件應(yīng)用在后臺(tái)常駐,郵件應(yīng)用可以采用本地推送服務(wù)接收郵件服務(wù)器推送的消息,即郵件服務(wù)器41能夠直接向ios設(shè)備42中的郵件應(yīng)用推送消息,避免了對(duì)apns服務(wù)器的依賴。
請(qǐng)參考圖5,其示出了本發(fā)明實(shí)施例提供的一種應(yīng)用狀態(tài)轉(zhuǎn)換裝置的框圖。該應(yīng)用狀態(tài)轉(zhuǎn)換裝置可以通過(guò)軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為移動(dòng)終端的全部或者一部分。該應(yīng)用狀態(tài)轉(zhuǎn)換裝置可以包括:?jiǎn)?dòng)單元510、重啟單元520、注冊(cè)單元530和喚醒單元540。
啟動(dòng)單元510,用于啟動(dòng)應(yīng)用,應(yīng)用通過(guò)操作系統(tǒng)提供的voip后臺(tái)接口配置voip功能;
重啟單元520,用于當(dāng)確定應(yīng)用開(kāi)始從運(yùn)行狀態(tài)向未運(yùn)行狀態(tài)轉(zhuǎn)換時(shí),在轉(zhuǎn)換完成前重啟應(yīng)用,運(yùn)行狀態(tài)包括前臺(tái)狀態(tài)或以后臺(tái)狀態(tài);
注冊(cè)單元530,用于在重啟應(yīng)用的過(guò)程中向操作系統(tǒng)注冊(cè)定時(shí)任務(wù),定時(shí)任務(wù)用于指示操作系統(tǒng)周期性喚醒處于掛起狀態(tài)的應(yīng)用;
喚醒單元540,用于根據(jù)定時(shí)任務(wù),周期性喚醒處于掛起狀態(tài)的應(yīng)用,喚醒后的應(yīng)用處于后臺(tái)狀態(tài)。
綜上所述,本實(shí)施例提供的應(yīng)用狀態(tài)轉(zhuǎn)換裝置,通過(guò)利用應(yīng)用從運(yùn)行狀態(tài)進(jìn)入未運(yùn)行狀態(tài)之前的緩沖期重啟應(yīng)用,使其進(jìn)入掛起狀態(tài),并根據(jù)重啟過(guò)程中注冊(cè)的定時(shí)任務(wù)周期性喚醒處于掛起狀態(tài)的應(yīng)用;解決了應(yīng)用由于被ios殺死或退出而進(jìn)入未運(yùn)行狀態(tài),導(dǎo)致應(yīng)用無(wú)法在后臺(tái)常駐的問(wèn)題;達(dá)到了利用自動(dòng)重啟和定時(shí)喚醒機(jī)制,實(shí)現(xiàn)應(yīng)用在后臺(tái)常駐的效果。
請(qǐng)參考圖6,其示出了本發(fā)明實(shí)施例提供的另一種應(yīng)用狀態(tài)轉(zhuǎn)換裝置的框圖。該應(yīng)用狀態(tài)轉(zhuǎn)換裝置可以通過(guò)軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為移動(dòng)終端的全部或者一部分。在圖5所示的基礎(chǔ)上,該應(yīng)用狀態(tài)轉(zhuǎn)換裝置可以進(jìn)一步包括:
轉(zhuǎn)換單元550,用于當(dāng)檢測(cè)到預(yù)定操作時(shí),將應(yīng)用從前臺(tái)狀態(tài)轉(zhuǎn)換為掛起狀態(tài);
喚醒單元540,還用于通過(guò)預(yù)定喚醒方式,喚醒處于掛起狀態(tài)的應(yīng)用;預(yù)定喚醒方式包括數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式中的至少一種。
在一種可能的實(shí)施方式中,當(dāng)通過(guò)數(shù)據(jù)推送喚醒方式喚醒應(yīng)用時(shí);
喚醒單元540,用于當(dāng)接收到應(yīng)用服務(wù)器向應(yīng)用推送的數(shù)據(jù)時(shí),喚醒處于掛起狀態(tài)的應(yīng)用。
在一種可能的實(shí)施方式中,當(dāng)通過(guò)定時(shí)任務(wù)喚醒方式喚醒應(yīng)用時(shí);
啟動(dòng)單元510,還用于在啟動(dòng)應(yīng)用的過(guò)程中向操作系統(tǒng)注冊(cè)定時(shí)任務(wù);
喚醒單元540,還用于根據(jù)定時(shí)任務(wù),周期性喚醒處于掛起狀態(tài)的應(yīng)用。
在一種可能的實(shí)施方式中,喚醒后的應(yīng)用維持第一時(shí)長(zhǎng)的后臺(tái)狀態(tài)后重新轉(zhuǎn)換為掛起狀態(tài)。
在一種可能的實(shí)施方式中,該裝置,還包括:
接收單元560,用于接收所述應(yīng)用從前臺(tái)狀態(tài)轉(zhuǎn)換到后臺(tái)狀態(tài)的過(guò)程中發(fā)送的后臺(tái)任務(wù)申請(qǐng),所述后臺(tái)任務(wù)申請(qǐng)用于請(qǐng)求所述操作系統(tǒng)允許所述應(yīng)用維持第二時(shí)長(zhǎng)的所述后臺(tái)狀態(tài)。
所述轉(zhuǎn)換單元550,還用于在所述第二時(shí)長(zhǎng)結(jié)束時(shí),將所述應(yīng)用從所述后臺(tái)狀態(tài)轉(zhuǎn)換為所述掛起狀態(tài)。
綜上所述,本實(shí)施例提供的應(yīng)用狀態(tài)轉(zhuǎn)換裝置,通過(guò)利用應(yīng)用從運(yùn)行狀態(tài)進(jìn)入未運(yùn)行狀態(tài)之前的緩沖期重啟應(yīng)用,使其進(jìn)入掛起狀態(tài),并根據(jù)重啟過(guò)程中注冊(cè)的定時(shí)任務(wù)周期性喚醒處于掛起狀態(tài)的應(yīng)用;解決了應(yīng)用由于被ios殺死或退出而進(jìn)入未運(yùn)行狀態(tài),導(dǎo)致應(yīng)用無(wú)法在后臺(tái)常駐的問(wèn)題;達(dá)到了利用自動(dòng)重啟和定時(shí)喚醒機(jī)制,實(shí)現(xiàn)應(yīng)用在后臺(tái)常駐的效果。
本實(shí)施例中,通過(guò)預(yù)先對(duì)應(yīng)用的工程文件進(jìn)行配置,并設(shè)置喚醒機(jī)制,當(dāng)應(yīng)用處于掛起狀態(tài)時(shí),ios能夠通過(guò)數(shù)據(jù)推送喚醒方式或定時(shí)任務(wù)喚醒方式喚醒應(yīng)用;當(dāng)應(yīng)用進(jìn)入未運(yùn)行狀態(tài)時(shí),能夠通過(guò)自動(dòng)重啟機(jī)制實(shí)現(xiàn)應(yīng)用自動(dòng)重啟,并在重啟后由ios定時(shí)喚醒進(jìn)入后臺(tái)狀態(tài),實(shí)現(xiàn)真正意義上的應(yīng)用后臺(tái)常駐。
本實(shí)施例中,應(yīng)用由前臺(tái)狀態(tài)進(jìn)入后臺(tái)狀態(tài)的過(guò)程中,通過(guò)后臺(tái)任務(wù)申請(qǐng)接口申請(qǐng)額外的后臺(tái)運(yùn)行時(shí)間,進(jìn)一步延長(zhǎng)了應(yīng)用處于后臺(tái)狀態(tài)的時(shí)間,對(duì)于即時(shí)性要求較高的應(yīng)用來(lái)說(shuō),能夠提高應(yīng)用接收并處理數(shù)據(jù)的時(shí)效性。
請(qǐng)參考圖7,其示出了本發(fā)明實(shí)施例提供的移動(dòng)終端700的結(jié)構(gòu)示意圖。該移動(dòng)終端700可以是安裝有ios的智能手機(jī)、平板電腦、電子書(shū)閱讀器或mp4(英文:movingpictureexpertsgroupaudiolayeriv,簡(jiǎn)稱:mp4)播放器等等。
移動(dòng)終端700可以包括:處理器710、存儲(chǔ)器720和顯示屏730等部件。本領(lǐng)域技術(shù)人員可以理解,圖7中示出的移動(dòng)終端700的結(jié)構(gòu)并不構(gòu)成對(duì)移動(dòng)終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同 的部件布置。其中:
處理器710是移動(dòng)終端700的控制中心,利用各種接口和線路連接整個(gè)移動(dòng)終端的各個(gè)部分,通過(guò)運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器720內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器720內(nèi)的數(shù)據(jù),執(zhí)行移動(dòng)終端700的各種功能和處理數(shù)據(jù),從而對(duì)移動(dòng)終端700進(jìn)行整體控制??蛇x的,處理器710可包括一個(gè)或多個(gè)處理核心;可選的,處理器710可集成應(yīng)用處理器、調(diào)制解調(diào)處理器以及協(xié)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無(wú)線通信,協(xié)處理器用于處理傳感器數(shù)據(jù)或觸摸屏數(shù)據(jù),比如,協(xié)處理器包括觸控集成電路??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器和協(xié)處理器也可以不集成到處理器710中,而以獨(dú)立的處理器存在。
存儲(chǔ)器720可用于存儲(chǔ)軟件程序以及模塊。處理器710通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器720的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器720可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)721、注冊(cè)單元722、喚醒單元723和至少一個(gè)應(yīng)用程序724;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)移動(dòng)終端700的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器720可以由任何類型的易失性或非易失性存儲(chǔ)設(shè)備或者它們的組合實(shí)現(xiàn),如靜態(tài)隨機(jī)存取存儲(chǔ)器(英文:staticrandomaccessmemory,簡(jiǎn)稱:sram),電可擦除可編程只讀存儲(chǔ)器(英文:electricallyerasableprogrammableread-onlymemory,簡(jiǎn)稱:eeprom),可擦除可編程只讀存儲(chǔ)器(英文:erasableprogrammablereadonlymemory,簡(jiǎn)稱:eprom),可編程只讀存儲(chǔ)器(英文:programmableread-onlymemory,簡(jiǎn)稱:prom),只讀存儲(chǔ)器(英文:readonlymemory,簡(jiǎn)稱:rom),磁存儲(chǔ)器,快閃存儲(chǔ)器,磁盤(pán)或光盤(pán)。相應(yīng)地,存儲(chǔ)器720還可以包括存儲(chǔ)器控制器,以提供處理器710對(duì)存儲(chǔ)器720的訪問(wèn)。
顯示屏730是具有顯示功能的顯示組件,該顯示屏730可以為觸摸屏或非觸摸屏。
移動(dòng)終端700還包括給各個(gè)部件供電的電源(圖中未示出),優(yōu)選的,電源可以通過(guò)電源管理系統(tǒng)與處理器710邏輯相連,從而通過(guò)電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。電源還可以包括一個(gè)或一個(gè)以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測(cè)電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。
盡管未示出,移動(dòng)終端700還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過(guò)硬件來(lái)完成,也可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。