本發(fā)明涉及計(jì)算機(jī)系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種智能終端中的服務(wù)保活方法及裝置。
背景技術(shù):
隨著社會(huì)的發(fā)展和科技的進(jìn)步,越來(lái)越多的用戶(hù)開(kāi)始使用手機(jī)、平板電腦、智能機(jī)器人等智能終端系統(tǒng)。由于智能終端的功能多樣性的優(yōu)勢(shì)越來(lái)越為明顯,智能終端日益成為了人們學(xué)習(xí)、工作及娛樂(lè)中不可缺少的工具。
作為現(xiàn)有的智能終端的主要操作系統(tǒng)之一,android操作系統(tǒng)具有很多優(yōu)點(diǎn),包括開(kāi)源特性、軟件發(fā)展快以及界面UI、系統(tǒng)優(yōu)化功能完善等。Android來(lái)源于Google,目前來(lái)看,Android的UI設(shè)計(jì)和系統(tǒng)優(yōu)化還是非常不錯(cuò)的,是除了iOS之外最受好評(píng)的系統(tǒng),而且Android對(duì)于系統(tǒng)的要求并不苛刻,在很多機(jī)型中可以流暢運(yùn)行。目前,android中某些服務(wù)需要保持常駐特性。例如,系統(tǒng)中的電話(huà)服務(wù)就是此類(lèi)保持常駐特性的服務(wù):在系統(tǒng)啟動(dòng)時(shí),該服務(wù)即啟動(dòng)。而服務(wù)若想在系統(tǒng)中保持常駐狀態(tài),需要滿(mǎn)足兩個(gè)條件:一是此服務(wù)位于/system/app/路徑下;二是此服務(wù)同時(shí)具有“system”屬性和“persistent”屬性。此類(lèi)服務(wù)在啟動(dòng)后一旦崩潰,則會(huì)被系統(tǒng)的ActivityManagerService(活動(dòng)管理器服務(wù))重新啟動(dòng)。
然而,上述這種服務(wù)?;罘绞骄哂械牟蛔闶牵涸谥悄苡布到y(tǒng)中,常駐服務(wù)不能正常升級(jí),這是由于正常的服務(wù)升級(jí)需要進(jìn)行覆蓋式安裝,升級(jí)包(pm install-r xxx.apk)安裝后服務(wù)會(huì)被裝入/data/app/路徑下,覆蓋安裝后就會(huì)失去“persistent”屬性,也即服務(wù)升級(jí)后就不能常駐于系統(tǒng),這些常駐服務(wù)無(wú)法升級(jí)即會(huì)使相應(yīng)的功能一直處于原有狀態(tài),新功能無(wú)法被更新使用,影響了用戶(hù)的使用效果。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種智能終端中的服務(wù)?;罘椒把b置,用于解決現(xiàn)有常駐服務(wù)?;罘绞綗o(wú)法保證常駐服務(wù)的正常升級(jí)的問(wèn)題。
第一方面,本發(fā)明提供一種智能終端中的服務(wù)?;罘椒ǎǎ?/p>
從智能終端中讀取系統(tǒng)對(duì)應(yīng)的常駐服務(wù)列表;
獲取所述常駐服務(wù)列表中的目標(biāo)常駐服務(wù)對(duì)應(yīng)的運(yùn)行狀態(tài)信息;
根據(jù)所述運(yùn)行狀態(tài)信息分別對(duì)各目標(biāo)常駐服務(wù)進(jìn)行監(jiān)聽(tīng),如果所述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng),則調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng),以使目標(biāo)常駐服務(wù)在升級(jí)后仍能運(yùn)行;
其中,所述服務(wù)管理程序是由一帶有系統(tǒng)?;顚傩缘膯?dòng)程序啟動(dòng)的。
可選地,所述運(yùn)行狀態(tài)信息包括所述目標(biāo)常駐服務(wù)預(yù)先注冊(cè)的對(duì)應(yīng)所述目標(biāo)常駐服務(wù)的死亡通知信息。
可選地,所述方法還包括:
分別通過(guò)預(yù)先注冊(cè)的特定接口接收各目標(biāo)常駐服務(wù)各自對(duì)應(yīng)的死亡通知信息,如果接收到所述死亡通知信息,則確定所述目標(biāo)常駐服務(wù)為未啟動(dòng)。
可選地,所述啟動(dòng)程序通過(guò)輪詢(xún)檢查的方式監(jiān)測(cè)所述服務(wù)啟動(dòng)管理程序是否啟動(dòng),并在監(jiān)測(cè)到所述服務(wù)啟動(dòng)管理程序未啟動(dòng)時(shí),啟動(dòng)所述服務(wù)啟動(dòng)管理程序。
可選地,所述方法還包括:
監(jiān)測(cè)所述目標(biāo)常駐服務(wù)在預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)的次數(shù),若監(jiān)測(cè)到所述次數(shù)超過(guò)預(yù)設(shè)閾值,則執(zhí)行重啟當(dāng)前系統(tǒng)的操作。
第二方面,本發(fā)明還提供了一種智能終端中的服務(wù)?;钛b置,包括:
常駐服務(wù)列表讀取單元,用于從智能終端中讀取系統(tǒng)對(duì)應(yīng)的常駐服務(wù)列表;
運(yùn)行狀態(tài)信息獲取單元,用于獲取所述常駐服務(wù)列表中的目標(biāo)常駐服務(wù)對(duì)應(yīng)的運(yùn)行狀態(tài)信息;
服務(wù)管理程序調(diào)用單元,用于根據(jù)所述運(yùn)行狀態(tài)信息分別對(duì)各目標(biāo)常駐服務(wù)進(jìn)行監(jiān)聽(tīng),當(dāng)所述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng)時(shí),調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng),以使目標(biāo)常駐服務(wù)在升級(jí)后仍能運(yùn)行;
其中,所述服務(wù)管理程序是由一帶有系統(tǒng)?;顚傩缘膯?dòng)程序啟動(dòng)的。
可選地,所述運(yùn)行狀態(tài)信息包括所述目標(biāo)常駐服務(wù)預(yù)先注冊(cè)的對(duì)應(yīng)所述目標(biāo)常駐服務(wù)的死亡通知信息。
可選地,所述裝置還包括:
啟動(dòng)狀態(tài)確定單元,用于分別通過(guò)預(yù)先注冊(cè)的特定接口接收各目標(biāo)常駐服務(wù)各自對(duì)應(yīng)的死亡通知信息,當(dāng)接收到所述死亡通知信息時(shí),確定所述目標(biāo)常駐服務(wù)為未啟動(dòng)。
可選地,所述啟動(dòng)程序通過(guò)輪詢(xún)檢查的方式監(jiān)測(cè)所述服務(wù)啟動(dòng)管理程序是否啟動(dòng),并在監(jiān)測(cè)到所述服務(wù)啟動(dòng)管理程序未啟動(dòng)時(shí),啟動(dòng)所述服務(wù)啟動(dòng)管理程序。
可選地,所述裝置還包括:
系統(tǒng)重啟單元,用于監(jiān)測(cè)所述目標(biāo)常駐服務(wù)在預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)的次數(shù),當(dāng)監(jiān)測(cè)到所述次數(shù)超過(guò)預(yù)設(shè)閾值時(shí),執(zhí)行重啟當(dāng)前系統(tǒng)的操作。
本發(fā)明提供的智能終端中的服務(wù)?;罘椒把b置,通過(guò)從智能終端中讀取系統(tǒng)對(duì)應(yīng)的常駐服務(wù)列表,獲取該常駐服務(wù)列表中的目標(biāo)常駐服務(wù)對(duì)應(yīng)的運(yùn)行狀態(tài)信息,如果目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng),則調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng);其中所述服務(wù)管理程序是由一帶有系統(tǒng)?;顚傩缘膯?dòng)程序啟動(dòng)的,本發(fā)明可以實(shí)現(xiàn)?;钕到y(tǒng)中的目標(biāo)常駐服務(wù),并且由于未將所有的目標(biāo)常駐服務(wù)均設(shè)置為帶有系統(tǒng)?;顚傩?,因而可保證該目標(biāo)常駐服務(wù)順利升級(jí)。
附圖說(shuō)明
圖1為本發(fā)明一實(shí)施例提供的智能終端中的服務(wù)?;罘椒ǖ牧鞒淌疽鈭D;
圖2為本發(fā)明一實(shí)施例提供的智能終端中的服務(wù)?;钕到y(tǒng)的結(jié)構(gòu)示意圖;
圖3為本發(fā)明一實(shí)施例提供的智能終端中的服務(wù)?;钛b置的結(jié)構(gòu)示意圖;
圖4示出了本發(fā)明另一個(gè)實(shí)施例提供的一種智能終端中的服務(wù)?;钛b置。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。
圖1示出了本發(fā)明一實(shí)施例提供的一種智能終端中的服務(wù)?;罘椒?,如圖1所示,該方法包括:
S1:從智能終端中讀取系統(tǒng)對(duì)應(yīng)的常駐服務(wù)列表;
具體來(lái)說(shuō),上述常駐服務(wù)列表中為系統(tǒng)中預(yù)先建立的包含當(dāng)前系統(tǒng)中的所有需要進(jìn)行?;畹哪繕?biāo)常駐服務(wù)的列表,通過(guò)該常駐服務(wù)列表可查找到所述目標(biāo)常駐服務(wù),進(jìn)而可以獲取到所述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息;
上述的智能終端可以包括但不限于以下任一種設(shè)有常駐服務(wù)的手機(jī)、電視、筆記本電腦、平板電腦等等。
S2:獲取所述常駐服務(wù)列表中的目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息;
具體地,所述運(yùn)行狀態(tài)信息可以包括表示所述目標(biāo)常駐服務(wù)是否處于運(yùn)行狀態(tài),即是否啟動(dòng)的信息。
可以理解的是,上述常駐服務(wù)列表中的每一個(gè)目標(biāo)常駐服務(wù)應(yīng)該具有各自對(duì)應(yīng)的運(yùn)行狀態(tài)信息。
舉例來(lái)講,上述的目標(biāo)常駐服務(wù)可以包括系統(tǒng)中的電話(huà)服務(wù)、短信服務(wù)、視頻服務(wù)、音頻服務(wù)以及一些用戶(hù)自定義的其他常駐服務(wù)等等。
S3:根據(jù)所述運(yùn)行狀態(tài)信息分別對(duì)各目標(biāo)常駐服務(wù)進(jìn)行監(jiān)聽(tīng),如果所述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng),則調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng),以使目標(biāo)常駐服務(wù)在升級(jí)后仍能運(yùn)行;
其中,所述服務(wù)管理程序是由一帶有系統(tǒng)保活屬性的啟動(dòng)程序啟動(dòng)的。
具體來(lái)說(shuō),上述智能終端在獲取到上述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息后,即可根據(jù)所獲取到的每一個(gè)運(yùn)行狀態(tài)信息分別確定對(duì)應(yīng)的目標(biāo)常駐服務(wù)是否啟動(dòng),進(jìn)而在確定所述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng)后,調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng)。
進(jìn)一步地,作為本方法實(shí)施例的優(yōu)選,上述運(yùn)行狀態(tài)信息可以包括所述目標(biāo)常駐服務(wù)預(yù)先注冊(cè)的對(duì)應(yīng)于該目標(biāo)常駐服務(wù)的死亡的通知信息,簡(jiǎn)稱(chēng)死亡通知信息;
上述死亡通知信息用于在該目標(biāo)常駐服務(wù)“死亡”(崩潰)時(shí),向檢測(cè)方(智能終端)發(fā)送的通知信息。
進(jìn)一步地,作為上述方法實(shí)施例的優(yōu)選,所述方法還包括:
分別通過(guò)預(yù)先注冊(cè)的特定接口接收各目標(biāo)常駐服務(wù)各自對(duì)應(yīng)的死亡通知信息,如果接收到所述死亡通知信息,則確定所述目標(biāo)常駐服務(wù)為未啟動(dòng)。
舉例來(lái)說(shuō),上述系統(tǒng)運(yùn)行過(guò)程中,智能終端按預(yù)設(shè)規(guī)則持續(xù)監(jiān)測(cè)所述目標(biāo)常駐服務(wù)是否發(fā)送死亡通知信息,一旦接受到某一個(gè)目標(biāo)常駐服務(wù)(例如電話(huà)服務(wù))發(fā)送來(lái)的該目標(biāo)常駐服務(wù)對(duì)應(yīng)的死亡通知信息,則據(jù)此判斷該目標(biāo)常駐服務(wù)(電話(huà)服務(wù))已死亡,即處于未啟動(dòng)狀態(tài)。
進(jìn)而,在根據(jù)所述目標(biāo)常駐服務(wù)對(duì)應(yīng)的運(yùn)行狀態(tài)信息判斷該目標(biāo)常駐服務(wù)是否啟動(dòng)后,即可根據(jù)所述判斷結(jié)果是否確定調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng)。
進(jìn)一步地,作為本方法實(shí)施例的優(yōu)選,上述運(yùn)行狀態(tài)信息可以攜帶所述目標(biāo)常駐服務(wù)對(duì)應(yīng)的優(yōu)先級(jí)信息,用于指示該目標(biāo)常駐服務(wù)所對(duì)應(yīng)的運(yùn)行狀態(tài)信息的處理優(yōu)先級(jí),例如高級(jí)、中級(jí)以及低級(jí)等等。
需要說(shuō)明的是,上述服務(wù)管理程序是由一帶有系統(tǒng)保活屬性的啟動(dòng)程序啟動(dòng)的。
具體而言,該帶有系統(tǒng)?;顚傩缘膯?dòng)程序即包括具有隨系統(tǒng)啟動(dòng)而啟動(dòng)的特性,且該啟動(dòng)程序在啟動(dòng)后一旦崩潰,則會(huì)由系統(tǒng)(例如由系統(tǒng)中的ActivityManagerService)重新喚起。
舉例來(lái)說(shuō),本實(shí)施例的智能終端中的服務(wù)?;罘椒梢酝ㄟ^(guò)采用Andorid Binder進(jìn)程間通信的Binder對(duì)象死亡通知機(jī)制來(lái)實(shí)現(xiàn)目標(biāo)常駐服務(wù)的保活。具體地,Binder通信過(guò)程中共涉及到如下四個(gè)對(duì)象:
Binder本地對(duì)象、Binder實(shí)體對(duì)象、Binder引用對(duì)象、Binder代理對(duì)象;
其中如果Binder本地對(duì)象意外死亡,會(huì)導(dǎo)致依賴(lài)于它的Binder代理對(duì)象變得無(wú)效。通過(guò)Binder對(duì)象死亡通知機(jī)制,可以監(jiān)控到Binder本地對(duì)象的死亡事件,然后通知那些引用了它的Binder代理對(duì)象。
在這種死亡通知機(jī)制中,首先是Binder代理對(duì)象將一個(gè)死亡接收通知注冊(cè)到Binder驅(qū)動(dòng)程序中,然后當(dāng)Binder驅(qū)動(dòng)程序監(jiān)控到Binder代理對(duì)象所引用的Binder本地對(duì)象死亡時(shí),Binder驅(qū)動(dòng)程序就會(huì)向Binder代理對(duì)象發(fā)送一個(gè)死亡通知。
需要說(shuō)明的是,Binder代理對(duì)象在注冊(cè)它所引用的Binder本地對(duì)象的死亡接受通知之前,首先要定義好死亡通知的接受者。Binder庫(kù)定義了死亡通知的接受者必須要繼承的基類(lèi)Death Recipient(死亡通知)。
具體來(lái)說(shuō),圖2示出了本實(shí)施例提供的智能終端中的服務(wù)?;钕到y(tǒng)的結(jié)構(gòu),如圖2所示,本實(shí)施例利用android常駐服務(wù)的系統(tǒng)?;顚傩?persistent屬性),通過(guò)建立一個(gè)簡(jiǎn)單的設(shè)置有persistent屬性的啟動(dòng)程序100(boot程序)來(lái)啟動(dòng)并維護(hù)系統(tǒng)的服務(wù)管理程序200,該服務(wù)管理程序200負(fù)責(zé)啟動(dòng)運(yùn)行狀態(tài)檢測(cè)程序300以及目標(biāo)常駐服務(wù)程序400(如所需?;畹囊纛l、視頻等)。
其中,目標(biāo)常駐服務(wù)程序400預(yù)先向所述運(yùn)行狀態(tài)檢測(cè)程序300注冊(cè)token(實(shí)質(zhì)為一binder代理對(duì)象),其用于在自身死亡時(shí),將“死亡通知”發(fā)送給運(yùn)行狀態(tài)檢測(cè)程序300,進(jìn)而由服務(wù)管理程序200來(lái)維護(hù)及重啟該“死亡通知”相應(yīng)的目標(biāo)常駐服務(wù);
上述音頻、視頻等目標(biāo)常駐服務(wù)注冊(cè)的token,實(shí)際上是所述目標(biāo)常駐服務(wù)通過(guò)binder IPC(進(jìn)程間通信)傳過(guò)來(lái)的binder代理對(duì)象,由于android中的binder驅(qū)動(dòng)會(huì)在binder對(duì)象死亡(崩潰)時(shí)發(fā)送“死亡通知”(Death Recipient)到對(duì)應(yīng)的binder代理對(duì)象(token),進(jìn)而當(dāng)音頻、視頻等目標(biāo)常駐服務(wù)死亡的時(shí)候,運(yùn)行狀態(tài)檢測(cè)程序300會(huì)收到對(duì)應(yīng)目標(biāo)常駐服務(wù)的“死亡通知”,從而可通過(guò)調(diào)用服務(wù)管理程序200對(duì)該“死亡通知”相應(yīng)的目標(biāo)常駐服務(wù)400進(jìn)行重新啟動(dòng)。
可以理解的是,由于所有需要保持常駐的目標(biāo)常駐服務(wù)程序不需要被設(shè)置成具有persistent屬性,因而可避免由于覆蓋式安裝升級(jí)包導(dǎo)致失去persistent屬性的弊端,故可以在保持常駐狀態(tài)的基礎(chǔ)上進(jìn)行正常升級(jí)。
需要說(shuō)明的是,上述的啟動(dòng)程序(boot程序)需滿(mǎn)足如下條件:
該啟動(dòng)程序是個(gè)很簡(jiǎn)單的程序,且足夠健壯,因而不需要升級(jí)。
由上述技術(shù)方案可知,本實(shí)施例的智能終端中的服務(wù)?;罘椒?,通過(guò)從智能終端中讀取系統(tǒng)對(duì)應(yīng)的常駐服務(wù)列表,獲取該常駐服務(wù)列表中的目標(biāo)常駐服務(wù)對(duì)應(yīng)的運(yùn)行狀態(tài)信息,如果目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng),則調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng);其中所述服務(wù)管理程序是由一帶有系統(tǒng)?;顚傩缘膯?dòng)程序啟動(dòng)的,本發(fā)明可以實(shí)現(xiàn)?;钕到y(tǒng)中的目標(biāo)常駐服務(wù),并且由于未將所有的目標(biāo)常駐服務(wù)均設(shè)置為帶有系統(tǒng)?;顚傩?,因而可保證該目標(biāo)常駐服務(wù)順利升級(jí),進(jìn)而可使常駐服務(wù)更新使用相應(yīng)的新功能,改善用戶(hù)的使用效果。
進(jìn)一步地,作為上述各方法實(shí)施例的優(yōu)選,所述啟動(dòng)程序100可以通過(guò)輪詢(xún)檢查的方式監(jiān)測(cè)服務(wù)啟動(dòng)管理程序200是否啟動(dòng),并在監(jiān)測(cè)到所述服務(wù)啟動(dòng)管理程序200未啟動(dòng)時(shí),啟動(dòng)所述服務(wù)啟動(dòng)管理程序200。
具體地,上述帶有系統(tǒng)保活屬性的啟動(dòng)程序100可以定時(shí)向所述服務(wù)啟動(dòng)管理程序200發(fā)出詢(xún)問(wèn),以根據(jù)服務(wù)啟動(dòng)管理程序200基于該詢(xún)問(wèn)所返回的應(yīng)答來(lái)判斷服務(wù)啟動(dòng)管理程序200是否啟動(dòng),進(jìn)而,在判斷服務(wù)啟動(dòng)管理程序200未啟動(dòng)時(shí),重啟服務(wù)啟動(dòng)管理程序200。
需要說(shuō)明的是,該啟動(dòng)程序100周而復(fù)始循環(huán)上述輪詢(xún)過(guò)程,以?;罘?wù)啟動(dòng)管理程序200。
舉例來(lái)說(shuō),啟動(dòng)程序100可通過(guò)一個(gè)簡(jiǎn)單的死循環(huán),用于輪詢(xún)檢查服務(wù)啟動(dòng)管理程序200是否啟動(dòng),若未啟動(dòng),則重啟服務(wù)啟動(dòng)管理程序200。
進(jìn)一步地,作為上述各方法實(shí)施例的優(yōu)選,所述方法還包括:
S4:監(jiān)測(cè)所述目標(biāo)常駐服務(wù)在預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)的次數(shù),若監(jiān)測(cè)到所述次數(shù)超過(guò)預(yù)設(shè)閾值,則執(zhí)行重啟當(dāng)前系統(tǒng)的操作。
具體地,系統(tǒng)實(shí)時(shí)監(jiān)測(cè)所述目標(biāo)常駐服務(wù)在預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)的次數(shù),若所述目標(biāo)常駐服務(wù)在該預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)的次數(shù)超過(guò)了預(yù)設(shè)閾值,則重啟所述系統(tǒng)。
舉例而言,若預(yù)先定義了目標(biāo)常駐服務(wù)在24小時(shí)內(nèi)的啟動(dòng)閾值為3次,則當(dāng)所述系統(tǒng)在監(jiān)測(cè)到所述目標(biāo)常駐服務(wù)在預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)4次時(shí),重啟整個(gè)系統(tǒng)。
另一方面,本發(fā)明還提供了一種智能終端中的服務(wù)?;钛b置,具體地,本發(fā)明一個(gè)實(shí)施例提供的一種智能終端中的服務(wù)保活裝置如圖3所示,該裝置包括常駐服務(wù)列表讀取單元10、運(yùn)行狀態(tài)信息獲取單元20和服務(wù)管理程序調(diào)用單元30,其中:
常駐服務(wù)列表讀取單元10用于從智能終端中讀取系統(tǒng)對(duì)應(yīng)的常駐服務(wù)列表;
運(yùn)行狀態(tài)信息獲取單元20用于獲取所述常駐服務(wù)列表中的目標(biāo)常駐服務(wù)對(duì)應(yīng)的運(yùn)行狀態(tài)信息;
服務(wù)管理程序調(diào)用單元30用于根據(jù)所述運(yùn)行狀態(tài)信息分別對(duì)各目標(biāo)常駐服務(wù)進(jìn)行監(jiān)聽(tīng),當(dāng)所述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng)時(shí),調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng),以使目標(biāo)常駐服務(wù)在升級(jí)后仍能運(yùn)行;
其中,所述服務(wù)管理程序是由一帶有系統(tǒng)?;顚傩缘膯?dòng)程序啟動(dòng)的。
總的來(lái)說(shuō),智能終端中的服務(wù)保活過(guò)程中,常駐服務(wù)列表讀取單元10從智能終端中讀取系統(tǒng)對(duì)應(yīng)的常駐服務(wù)列表;運(yùn)行狀態(tài)信息獲取單元20獲取常駐服務(wù)列表中的目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息;然后服務(wù)管理程序調(diào)用單元30在所述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng)時(shí),調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng)。
具體來(lái)說(shuō),上述常駐服務(wù)列表中為系統(tǒng)中預(yù)先建立的包含當(dāng)前系統(tǒng)中的所有需要進(jìn)行?;畹哪繕?biāo)常駐服務(wù)的列表,通過(guò)該常駐服務(wù)列表可查找到所述目標(biāo)常駐服務(wù),進(jìn)而可以獲取到所述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息。
上述的智能終端可以包括但不限于以下任一種設(shè)有常駐服務(wù)的手機(jī)、電視、筆記本電腦、平板電腦等等;
具體地,所述運(yùn)行狀態(tài)信息可以包括表示所述目標(biāo)常駐服務(wù)是否處于運(yùn)行狀態(tài),即是否啟動(dòng)的信息。
可以理解的是,上述常駐服務(wù)列表中的每一個(gè)目標(biāo)常駐服務(wù)應(yīng)該具有各自對(duì)應(yīng)的運(yùn)行狀態(tài)信息。
舉例來(lái)講,上述的目標(biāo)常駐服務(wù)可以包括系統(tǒng)中的電話(huà)服務(wù)、短信服務(wù)、視頻服務(wù)、音頻服務(wù)以及一些用戶(hù)自定義的其他常駐服務(wù)等等。
在獲取到上述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息后,服務(wù)管理程序調(diào)用單元30即可根據(jù)所獲取到的每一個(gè)運(yùn)行狀態(tài)信息分別確定對(duì)應(yīng)的目標(biāo)常駐服務(wù)是否啟動(dòng),進(jìn)而在確定所述目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng)后,調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng),以使目標(biāo)常駐服務(wù)在升級(jí)后仍能運(yùn)行。
進(jìn)一步地,作為本裝置實(shí)施例的優(yōu)選,上述運(yùn)行狀態(tài)信息可以包括所述目標(biāo)常駐服務(wù)預(yù)先注冊(cè)的對(duì)應(yīng)于該目標(biāo)常駐服務(wù)的死亡的通知信息,簡(jiǎn)稱(chēng)死亡通知信息;
上述死亡通知信息用于在該目標(biāo)常駐服務(wù)“死亡”(崩潰)時(shí),向檢測(cè)方(智能終端)發(fā)送的通知信息。
進(jìn)一步地,,作為上述裝置實(shí)施例的優(yōu)選,所述裝置還可以包括:
啟動(dòng)狀態(tài)確定單元30,用于分別通過(guò)預(yù)先注冊(cè)的特定接口接收各目標(biāo)常駐服務(wù)各自對(duì)應(yīng)的死亡通知信息,當(dāng)接收到所述死亡通知信息時(shí),確定所述目標(biāo)常駐服務(wù)為未啟動(dòng)。
舉例來(lái)說(shuō),上述裝置運(yùn)行過(guò)程中,啟動(dòng)狀態(tài)確定單元30按照預(yù)設(shè)規(guī)則持續(xù)監(jiān)測(cè)所述目標(biāo)常駐服務(wù)是否發(fā)送死亡通知信息,一旦接受到某一個(gè)目標(biāo)常駐服務(wù)(例如電話(huà)服務(wù))發(fā)送來(lái)的該目標(biāo)常駐服務(wù)對(duì)應(yīng)的死亡通知信息,則據(jù)此判斷該目標(biāo)常駐服務(wù)(電話(huà)服務(wù))已死亡,即處于未啟動(dòng)狀態(tài)。
進(jìn)而,在根據(jù)所述目標(biāo)常駐服務(wù)對(duì)應(yīng)的運(yùn)行狀態(tài)信息判斷該目標(biāo)常駐服務(wù)是否啟動(dòng)后,即可根據(jù)所述判斷結(jié)果是否確定調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng)。
進(jìn)一步地,作為本方法實(shí)施例的優(yōu)選,上述運(yùn)行狀態(tài)信息可以攜帶所述目標(biāo)常駐服務(wù)對(duì)應(yīng)的優(yōu)先級(jí)信息,用于指示該目標(biāo)常駐服務(wù)所對(duì)應(yīng)的運(yùn)行狀態(tài)信息的處理優(yōu)先級(jí),例如高級(jí)、中級(jí)以及低級(jí)等等
需要說(shuō)明的是,上述服務(wù)管理程序是由一帶有系統(tǒng)保活屬性的啟動(dòng)程序啟動(dòng)的。
具體而言,該帶有系統(tǒng)?;顚傩缘膯?dòng)程序即包括具有隨系統(tǒng)啟動(dòng)而啟動(dòng)的特性,且該啟動(dòng)程序在啟動(dòng)后一旦崩潰,則會(huì)由系統(tǒng)(例如由系統(tǒng)中的ActivityManagerService)重新喚起。
舉例來(lái)說(shuō),本實(shí)施例的智能終端中的服務(wù)?;罘椒梢酝ㄟ^(guò)采用Andorid Binder進(jìn)程間通信的Binder對(duì)象死亡通知機(jī)制來(lái)實(shí)現(xiàn)目標(biāo)常駐服務(wù)的?;?。具體地,Binder通信過(guò)程中共涉及到如下四個(gè)對(duì)象:
Binder本地對(duì)象、Binder實(shí)體對(duì)象、Binder引用對(duì)象、Binder代理對(duì)象;
其中,如果Binder本地對(duì)象意外死亡,會(huì)導(dǎo)致依賴(lài)于它的Binder代理對(duì)象變得無(wú)效。通過(guò)Binder對(duì)象死亡通知機(jī)制,可以監(jiān)控到Binder本地對(duì)象的死亡事件,然后通知那些引用了它的Binder代理對(duì)象。
在這種死亡通知機(jī)制中,首先是Binder代理對(duì)象將一個(gè)死亡接收通知注冊(cè)到Binder驅(qū)動(dòng)程序中,然后當(dāng)Binder驅(qū)動(dòng)程序監(jiān)控到Binder代理對(duì)象所引用的Binder本地對(duì)象死亡時(shí),Binder驅(qū)動(dòng)程序就會(huì)向Binder代理對(duì)象發(fā)送一個(gè)死亡通知。
需要說(shuō)明的是,Binder代理對(duì)象在注冊(cè)它所引用的Binder本地對(duì)象的死亡接受通知之前,首先要定義好死亡通知的接受者。Binder庫(kù)定義了死亡通知的接受者必須要繼承的基類(lèi)DeathRecipient(死亡通知)。
如圖2所示,本實(shí)施例利用android常駐服務(wù)的系統(tǒng)?;顚傩?persistent屬性),通過(guò)建立一個(gè)簡(jiǎn)單的設(shè)置有persistent屬性的啟動(dòng)程序100(boot程序)來(lái)啟動(dòng)并維護(hù)系統(tǒng)的服務(wù)管理程序200,該服務(wù)管理程序200負(fù)責(zé)啟動(dòng)運(yùn)行狀態(tài)檢測(cè)程序300以及目標(biāo)常駐服務(wù)程序400(如所需保活的音頻、視頻等)。
其中,目標(biāo)常駐服務(wù)程序400預(yù)先向所述運(yùn)行狀態(tài)檢測(cè)程序300注冊(cè)token(實(shí)質(zhì)為一binder代理對(duì)象),其用于在自身死亡時(shí),將“死亡通知”發(fā)送給運(yùn)行狀態(tài)檢測(cè)程序300,進(jìn)而由服務(wù)管理程序200來(lái)維護(hù)及重啟該“死亡通知”相應(yīng)的目標(biāo)常駐服務(wù);
上述音頻、視頻等目標(biāo)常駐服務(wù)注冊(cè)的token,實(shí)際上是所述目標(biāo)常駐服務(wù)通過(guò)binder IPC(進(jìn)程間通信)傳過(guò)來(lái)的binder代理對(duì)象,由于android中的binder驅(qū)動(dòng)會(huì)在binder對(duì)象死亡(崩潰)時(shí)發(fā)送“死亡通知”(Death Recipient)到對(duì)應(yīng)的binder代理對(duì)象(token),進(jìn)而當(dāng)音頻、視頻等目標(biāo)常駐服務(wù)死亡的時(shí)候,運(yùn)行狀態(tài)檢測(cè)程序300會(huì)收到對(duì)應(yīng)目標(biāo)常駐服務(wù)的“死亡通知”,從而可通過(guò)調(diào)用服務(wù)管理程序200對(duì)該“死亡通知”相應(yīng)的目標(biāo)常駐服務(wù)400進(jìn)行重新啟動(dòng)。
可以理解的是,由于所有需要保持常駐的目標(biāo)常駐服務(wù)程序不需要被設(shè)置成具有persistent屬性,因而可避免由于覆蓋式安裝升級(jí)包導(dǎo)致失去persistent屬性的弊端,故可以在保持常駐狀態(tài)的基礎(chǔ)上進(jìn)行正常升級(jí)。
需要說(shuō)明的是,上述的啟動(dòng)程序(boot程序)需滿(mǎn)足如下條件:
該啟動(dòng)程序是個(gè)很簡(jiǎn)單的程序,且足夠健壯,因而不需要升級(jí)。
由上述技術(shù)方案可知,本實(shí)施例的智能終端中的服務(wù)?;钛b置,通過(guò)從智能終端中讀取系統(tǒng)對(duì)應(yīng)的常駐服務(wù)列表,獲取該常駐服務(wù)列表中的目標(biāo)常駐服務(wù)對(duì)應(yīng)的運(yùn)行狀態(tài)信息,如果目標(biāo)常駐服務(wù)的運(yùn)行狀態(tài)信息為未啟動(dòng),則調(diào)用服務(wù)管理程序?qū)λ瞿繕?biāo)常駐服務(wù)進(jìn)行啟動(dòng);其中所述服務(wù)管理程序是由一帶有系統(tǒng)保活屬性的啟動(dòng)程序啟動(dòng)的,本發(fā)明可以實(shí)現(xiàn)保活系統(tǒng)中的目標(biāo)常駐服務(wù),并且由于未將所有的目標(biāo)常駐服務(wù)均設(shè)置為帶有系統(tǒng)?;顚傩?,因而可保證該目標(biāo)常駐服務(wù)順利升級(jí),進(jìn)而可使常駐服務(wù)更新使用相應(yīng)的新功能,改善用戶(hù)的使用效果。
進(jìn)一步地,作為上述各裝置實(shí)施例的優(yōu)選,所述啟動(dòng)程序100可以通過(guò)輪詢(xún)檢查的方式監(jiān)測(cè)服務(wù)啟動(dòng)管理程序200是否啟動(dòng),并在監(jiān)測(cè)到所述服務(wù)啟動(dòng)管理程序200未啟動(dòng)時(shí),啟動(dòng)所述服務(wù)啟動(dòng)管理程序200。
具體地,上述帶有系統(tǒng)保活屬性的啟動(dòng)程序100可以定時(shí)向所述服務(wù)啟動(dòng)管理程序200發(fā)出詢(xún)問(wèn),以根據(jù)服務(wù)啟動(dòng)管理程序200基于該詢(xún)問(wèn)所返回的應(yīng)答來(lái)判斷服務(wù)啟動(dòng)管理程序200是否啟動(dòng),進(jìn)而,在判斷服務(wù)啟動(dòng)管理程序200未啟動(dòng)時(shí),重啟服務(wù)啟動(dòng)管理程序200。
需要說(shuō)明的是,該啟動(dòng)程序100周而復(fù)始循環(huán)上述輪詢(xún)過(guò)程,以保活服務(wù)啟動(dòng)管理程序200。
舉例來(lái)說(shuō),啟動(dòng)程序100可通過(guò)一個(gè)簡(jiǎn)單的死循環(huán),用于輪詢(xún)檢查服務(wù)啟動(dòng)管理程序200是否啟動(dòng),若未啟動(dòng),則重啟服務(wù)啟動(dòng)管理程序200。
圖4示出了本發(fā)明另一個(gè)實(shí)施例提供的一種智能終端中的服務(wù)?;钛b置,如圖4所示,在上述裝置實(shí)施例的基礎(chǔ)上,所述裝置還可以包括:
系統(tǒng)重啟單元40,用于監(jiān)測(cè)所述目標(biāo)常駐服務(wù)在預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)的次數(shù),當(dāng)監(jiān)測(cè)到所述次數(shù)超過(guò)預(yù)設(shè)閾值時(shí),執(zhí)行重啟當(dāng)前系統(tǒng)的操作。
具體地,系統(tǒng)重啟單元40實(shí)時(shí)監(jiān)測(cè)所述目標(biāo)常駐服務(wù)在預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)的次數(shù),若所述目標(biāo)常駐服務(wù)在該預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)的次數(shù)超過(guò)了預(yù)設(shè)閾值,則重啟所述系統(tǒng)。
舉例而言,若預(yù)先定義了目標(biāo)常駐服務(wù)在24小時(shí)內(nèi)的啟動(dòng)閾值為3次,則系統(tǒng)重啟單元40監(jiān)測(cè)到所述目標(biāo)常駐服務(wù)在預(yù)設(shè)時(shí)間內(nèi)被啟動(dòng)4次時(shí),重啟所述系統(tǒng)。
需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間啟動(dòng)任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括要素的過(guò)程、方法、物品或者設(shè)備中還啟動(dòng)另外的相同要素。術(shù)語(yǔ)“上”、“下”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡(jiǎn)化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對(duì)本發(fā)明的限制。除非另有明確的規(guī)定和限定,術(shù)語(yǔ)“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過(guò)中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語(yǔ)在本發(fā)明中的具體含義。
本發(fā)明的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而能夠理解的是,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。類(lèi)似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本發(fā)明公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋呈反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書(shū)由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。本發(fā)明并不局限于任何單一的方面,也不局限于任何單一的實(shí)施例,也不局限于這些方面和/或?qū)嵤├娜我饨M合和/或置換。而且,可以單獨(dú)使用本發(fā)明的每個(gè)方面和/或?qū)嵤├蛘吲c一個(gè)或更多其他方面和/或其實(shí)施例結(jié)合使用。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說(shuō)明書(shū)的范圍當(dāng)中。