實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的方法及裝置,通過建立1個(gè)公共service,可以同時(shí)監(jiān)聽所有服務(wù)端口并提供通用服務(wù),給其他應(yīng)用程序掛載自己的監(jiān)聽目標(biāo)和處理指令,由公共SERVICE處理執(zhí)行指令,實(shí)現(xiàn)了移動(dòng)終端操作系統(tǒng)上的應(yīng)用程序本地服務(wù)共享,避免了應(yīng)用程序私有SERVICE跟隨應(yīng)用程序的運(yùn)行常駐內(nèi)存,占用手機(jī)的Cpu、內(nèi)存、帶寬等資源問題;另外由于應(yīng)用程序把需要監(jiān)聽目標(biāo)和處理指令掛載到公共SERVICE,使應(yīng)用程序再次開發(fā)的service程序指令與公共SERVICE之間保持有開放接口,因此在利用公共SERVICE提供的通用服務(wù)同時(shí),還可以實(shí)現(xiàn)應(yīng)用程序之間通過公共SERVICE實(shí)現(xiàn)服務(wù)的共享。
【專利說明】實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及手機(jī)終端【技術(shù)領(lǐng)域】,特別涉及一種實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)在,Android系統(tǒng)作為一種智能移動(dòng)終端操作系統(tǒng),其平臺(tái)上的應(yīng)用程序以十萬計(jì)數(shù),一些用戶在手機(jī)上安裝了幾十甚至上百的應(yīng)用程序。因此在一個(gè)手機(jī)Android系統(tǒng)中,會(huì)有大量的應(yīng)用程序。一些應(yīng)用程序包含各自的本地服務(wù)service程序,這些service程序開機(jī)就運(yùn)行,并一直運(yùn)行下去,導(dǎo)致手機(jī)上同時(shí)運(yùn)行的service超過幾十個(gè),這些service程序的主要功能包含監(jiān)聽來電信息,監(jiān)聽短信,監(jiān)聽文件訪問,監(jiān)聽通訊錄訪問等通訊監(jiān)聽以及和應(yīng)用程序的服務(wù)器保持心跳聯(lián)系,以讓應(yīng)用程序的服務(wù)器確定這個(gè)應(yīng)用程序是運(yùn)行的。每個(gè)service程序要監(jiān)聽的內(nèi)容都是大致相同的,而要采取的動(dòng)作是不同的。例如,有些應(yīng)用程序的service程序監(jiān)聽到來電的時(shí)候,會(huì)顯示主叫電話的聯(lián)系人信息;有的應(yīng)用程序的service程序會(huì)檢測(cè)主叫號(hào)碼是否為詐騙電話等。Android系統(tǒng)的進(jìn)程管理方式是,把進(jìn)程都保留在內(nèi)存中,對(duì)進(jìn)程的重要性進(jìn)行評(píng)估,直到系統(tǒng)需要更多內(nèi)存時(shí),將重要性排名為最末尾的進(jìn)程進(jìn)行關(guān)閉。但是基于這種進(jìn)程管理機(jī)制,這些應(yīng)用程序包含的各自本地服務(wù)service程序會(huì)跟隨應(yīng)用程序常駐內(nèi)存,一直運(yùn)行,導(dǎo)致消耗一些手機(jī)的Cpu、內(nèi)存、帶寬資源等問題。
[0003]目前在Android系統(tǒng)中,解決上述問題的方法是,提供后臺(tái)Service服務(wù),用于將一些計(jì)算或常用系統(tǒng)通用功能放在一個(gè)獨(dú)立的進(jìn)程中進(jìn)行處理,其他應(yīng)用程序在需要Service服務(wù)時(shí),在本地調(diào)用該進(jìn)程,這樣應(yīng)用程序主進(jìn)程可以全力并快速處理界面響應(yīng),提高用戶體驗(yàn)效果。
[0004]參見圖1,目如應(yīng)用程序和后臺(tái)Service的調(diào)用關(guān)系圖例。但是對(duì)于應(yīng)用程序開發(fā)者來說,后臺(tái)Service服務(wù)所提供的功能是固定,有限的,且其他的應(yīng)用程序只能調(diào)用后臺(tái)Service已有的固定功能,而隨著手機(jī)應(yīng)用的發(fā)展和手機(jī)用戶的需求,應(yīng)用程序所需要監(jiān)聽的事件和執(zhí)行的動(dòng)作是多變的,以致后臺(tái)Service服務(wù)所提供的功能無法滿足應(yīng)用程序多變的服務(wù)需求,因此應(yīng)用程序只能再次開發(fā)私有service程序,而再次開發(fā)的service程序跟隨應(yīng)用程序的運(yùn)行常駐內(nèi)存,又再次造成了這些應(yīng)用程序包含的各自本地服務(wù)service程序跟隨應(yīng)用程序常駐內(nèi)存,一直運(yùn)行,導(dǎo)致消耗一些手機(jī)的Cpu、內(nèi)存、帶寬資源等問題;而且在Android系統(tǒng)中,對(duì)權(quán)限有著嚴(yán)格的限定,一般運(yùn)行在前臺(tái)的應(yīng)用程序都是以最普通用戶的身份進(jìn)行運(yùn)行的,應(yīng)用程序之間一般也不提供可以互相調(diào)用的接口,除非獲得root權(quán)限,因此這些再次開發(fā)的service程序也無法實(shí)現(xiàn)共享,導(dǎo)致應(yīng)用程序的開發(fā)成本很聞。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供了一種實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的方法。該方法通過提供I個(gè)公共service,可以同時(shí)監(jiān)聽所有服務(wù)端口并提供通用服務(wù),給其他應(yīng)用程序掛載自己的監(jiān)聽目標(biāo)和處理指令,由公共SERVICE處理執(zhí)行指令,實(shí)現(xiàn)了移動(dòng)終端操作系統(tǒng)上的應(yīng)用程序本地服務(wù)共享,避免了應(yīng)用程序私有SERVICE跟隨應(yīng)用程序的運(yùn)行常駐內(nèi)存,占用手機(jī)的Cpu、內(nèi)存、帶寬等資源問題。本方法具體步驟為:
[0006]1、監(jiān)聽到用戶事件;
[0007]2、從掛載在公共SERVICE上的應(yīng)用程序的指令中,查詢出監(jiān)聽到所述用戶事件之后處理操作所對(duì)應(yīng)的指令;
[0008]3、執(zhí)行所述掛載在所述公共SERVICE上的監(jiān)聽到所述用戶事件之后的處理操作所對(duì)應(yīng)的指令。
[0009]其中所述公共SERVICE進(jìn)一步包括腳本語言解釋器,相應(yīng)地,步驟2和3所述掛載在公共SERVICE上的指令具體使用的是腳本語言。
[0010]其中所述公共SERVICE進(jìn)一步與后臺(tái)SERVICE服務(wù)有接口,相應(yīng)地,步驟2和3所述公共SERVICE接收的應(yīng)用程序所掛載的指令具體使用的是:
[0011]應(yīng)用程序調(diào)用后臺(tái)SERVICE服務(wù)的功能模塊指令,
[0012]和應(yīng)用程序自行開發(fā)的個(gè)性功能模塊指令。
[0013]本發(fā)明提供了一種實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的裝置。該裝置具體為一個(gè)公共SERVICE,該公共SERVICE具體包括:
[0014]監(jiān)聽單元:用于監(jiān)聽用戶事件,并在監(jiān)聽到事件時(shí),向查詢單元發(fā)送監(jiān)聽到所述用戶事件的消息;
[0015]查詢單元:用于接收監(jiān)聽單元發(fā)來的消息,根據(jù)所述消息在指令掛載單元保存的掛載在公共SERVICE上的應(yīng)用程序的指令中查詢出監(jiān)聽到所述用戶事件之后處理操作所對(duì)應(yīng)的指令,并向執(zhí)行單元發(fā)送執(zhí)行所述處理操作所對(duì)應(yīng)的指令的消息;
[0016]執(zhí)行單元:用于接收查詢單元發(fā)來的消息,執(zhí)行在指令掛載單元中保存的所述應(yīng)用程序掛載在所述公共SERVICE上的監(jiān)聽到該事件之后的處理操作所對(duì)應(yīng)的指令;
[0017]指令掛載單元:用于保存和刪除掛載在公共SERVICE上的應(yīng)用程序指令。
[0018]該裝置進(jìn)一步包括腳本語言解釋器,相應(yīng)地,查詢單元,執(zhí)行單元,指令掛載單元所述的掛載在公共SERVICE上的指令具體使用的是腳本語言。
[0019]該裝置進(jìn)一步與后臺(tái)SERVICE有開放接口,相應(yīng)地,查詢單元,執(zhí)行單元,指令掛載單元所述的掛載在公共SERVICE上的指令具體包括:
[0020]應(yīng)用程序調(diào)用后臺(tái)SERVICE服務(wù)的功能模塊指令,
[0021]和應(yīng)用程序自行開發(fā)的個(gè)性功能模塊指令。
[0022]可見,本發(fā)明具有如下有益效果:
[0023]本發(fā)明提供一種實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的方法及裝置,通過建立I個(gè)公共service,可以同時(shí)監(jiān)聽所有服務(wù)端口并提供通用服務(wù),給其他應(yīng)用程序掛載自己的監(jiān)聽用戶事件目標(biāo)和處理指令,由公共SERVICE處理執(zhí)行指令,實(shí)現(xiàn)了移動(dòng)終端操作系統(tǒng)上的應(yīng)用程序本地服務(wù)共享,避免了應(yīng)用程序私有SERVICE跟隨應(yīng)用程序的運(yùn)行常駐內(nèi)存,占用手機(jī)的Cpu、內(nèi)存、帶寬等資源問題;另外由于應(yīng)用程序把需要監(jiān)聽目標(biāo)和處理指令掛載到公共SERVICE,使應(yīng)用程序再次開發(fā)的service程序指令與公共SERVICE之間保持有開放接口,因此在利用公共SERVICE提供的通用服務(wù)同時(shí),還可以實(shí)現(xiàn)應(yīng)用程序之間 通過公共SERVICE實(shí)現(xiàn)服務(wù)的共享。
【專利附圖】
【附圖說明】
[0024]圖1是目如應(yīng)用程序和后臺(tái)Service的調(diào)用關(guān)系圖例;
[0025]圖2是本發(fā)明的方法步驟圖例;
[0026]圖3是本發(fā)明一個(gè)新安裝的應(yīng)用程序掛載到公共SERVICE的步驟圖例;
[0027]圖4是本發(fā)明一個(gè)實(shí)施例中公共SERVICE和應(yīng)用程序的關(guān)系圖例;
[0028]圖5是本發(fā)明另一個(gè)實(shí)施例中公共SERVICE和應(yīng)用程序的關(guān)系圖例;
[0029]圖6是本發(fā)明一個(gè)實(shí)施例中裝置組成圖例;
[0030]圖7是本發(fā)明另一個(gè)實(shí)施例中裝置組成圖例。
【具體實(shí)施方式】
[0031]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)的說明。
[0032]本發(fā)明提供了一種實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的方法,所述移動(dòng)終端操作系統(tǒng)例如智能手機(jī)這種移動(dòng)終端上的Android系統(tǒng)。該方法通過提供I個(gè)公共service,可以同時(shí)監(jiān)聽所有服務(wù)端口并提供通用服務(wù),給其他應(yīng)用程序掛載自己的監(jiān)聽目標(biāo)和處理指令,實(shí)現(xiàn)了移動(dòng)終端操作系統(tǒng)上的應(yīng)用程序本地服務(wù)共享。
[0033]參見圖2,本發(fā)明的方法具體步驟為:
[0034]21、監(jiān)聽到用戶事件;
[0035]22、從掛載在公共SERVICE上的應(yīng)用程序的指令中,查詢出監(jiān)聽到所述用戶事件之后處理操作所對(duì)應(yīng)的指令;
[0036]23、執(zhí)行所述掛載在所述公共SERVICE上的監(jiān)聽到所述用戶事件之后的處理操作所對(duì)應(yīng)的指令。
[0037]其中,該方法進(jìn)一步包括一個(gè)新安裝的應(yīng)用程序掛載到公共SERVICE的步驟,參見圖3,所述公共SERVICE接收所述應(yīng)用程序掛載的步驟具體為:
[0038]301、公共SERVICE收到應(yīng)用程序的掛載請(qǐng)求;
[0039]302、公共SERVICE接收所述應(yīng)用程序的指令的掛載。
[0040]從應(yīng)用程序角度來說,首先要判斷是否識(shí)別到公共SERVICE,如果沒有識(shí)別到,則啟動(dòng)私有SERVICE,結(jié)束掛載請(qǐng)求;如果識(shí)別到公共SERVICE,向公共SERVICE發(fā)送掛載請(qǐng)求。
[0041]考慮到可能影響順利接收所述應(yīng)用程序操作指令的掛載的幾個(gè)方面,如:應(yīng)用程序數(shù)據(jù)的安全,指令成功的執(zhí)行,節(jié)省系統(tǒng)的資源,公共SERVICE與應(yīng)用程序之間的通訊,快速的查找應(yīng)用程序,所以,為了確保公共SERVICE順利接收所述應(yīng)用程序操作指令的掛載,在以上所述公共SERVICE接收應(yīng)用掛載的步驟301和步驟302之間,還包括公共SERVICE為接收所述應(yīng)用程序的掛載請(qǐng)求所做的管理操作,具體為以下步驟的全部、任意一個(gè)或任意組合:
[0042]所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還在公共service的內(nèi)存空間,創(chuàng)建一個(gè)該應(yīng)用程序的數(shù)據(jù)空間以保存該應(yīng)用程序的指令和臨時(shí)數(shù)據(jù);[0043]所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還檢查指令的合法性,如果發(fā)現(xiàn)錯(cuò)誤,則通知應(yīng)用程序掛載失?。?br>
[0044]所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還檢查應(yīng)用程序的私有service,如果發(fā)現(xiàn)啟動(dòng),則強(qiáng)制關(guān)閉;
[0045]所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還檢查應(yīng)用程序的開放接口api,確保指令能正確執(zhí)行;
[0046]所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還將該應(yīng)用程序設(shè)置為公共服務(wù)隊(duì)列成員;在此設(shè)置公共服務(wù)隊(duì)列的目的是:在本發(fā)明具體實(shí)施時(shí),步驟22所述查詢具體首先從所述公共服務(wù)隊(duì)列中依次查詢出所述應(yīng)用程序,再由所述應(yīng)用程序查詢出應(yīng)用程序掛載在公共SERVICE上的指令,這樣的設(shè)置,便于所述公共SERVICE查詢指令及后續(xù)向所述應(yīng)用程序反饋。
[0047]其中步驟21、22、23所述監(jiān)聽到用戶時(shí)間具體為監(jiān)聽到所述用戶事件所對(duì)應(yīng)的服務(wù)端口的變化,本發(fā)明具體實(shí)施時(shí),公共SERVICE監(jiān)聽所有已經(jīng)定義的服務(wù)端口的變化,例如:監(jiān)聽來電,短信,文件訪問,網(wǎng)絡(luò)通訊,系統(tǒng)設(shè)置變化等事件。
[0048]在實(shí)際應(yīng)用中,經(jīng)常會(huì)發(fā)生應(yīng)用程序被卸載事件,在應(yīng)用程序被卸載之后,掛載在公共SERVICE上的所述被卸載應(yīng)用程序的指令同時(shí)不需要再被執(zhí)行,因此,其中步驟22所述監(jiān)聽用戶事件如果是應(yīng)用程序被卸載事件,則相應(yīng)該方法進(jìn)一步包括自動(dòng)把該應(yīng)用程序掛載的指令從公共service刪除。
[0049]其中步驟22所述找出需要監(jiān)聽這個(gè)事件的應(yīng)用程序之后進(jìn)一步包括判斷找出的應(yīng)用程序的數(shù)量大于標(biāo)準(zhǔn)值時(shí),通知部分應(yīng)用程序啟動(dòng)私有SERVICE,所述部分指的是最少I個(gè),并且不執(zhí)行所述部分應(yīng)用程序監(jiān)聽該事件之后所要執(zhí)行的指令。進(jìn)一步包括這一步驟的理由是:對(duì)于系統(tǒng)占用量大、經(jīng)常訪問使用的應(yīng)用時(shí),使用公共service則要頻繁提供或調(diào)用相應(yīng)的服務(wù)進(jìn)程,反而會(huì)導(dǎo)致系統(tǒng)性能下降,這種情況下也建議應(yīng)用程序啟動(dòng)自己的私有 service。
[0050]其中步驟23執(zhí)行所述應(yīng)用程序掛載在所述公共SERVICE上的監(jiān)聽到該事件之后的處理操作所對(duì)應(yīng)的指令具體包括:
[0051]開啟或者關(guān)閉通話功能,接收或者丟棄通訊包,啟動(dòng)或者關(guān)閉一些應(yīng)用程序,顯示一些特定的信息給用戶等。
[0052]在手機(jī)實(shí)際使用中,例如,用戶觸發(fā)了 QQ上線事件,需要通知應(yīng)用程序的遠(yuǎn)程服務(wù)器,使遠(yuǎn)程服務(wù)器保持用戶QQ上線狀態(tài),公共SERVICE在監(jiān)聽到這一事件之后,與遠(yuǎn)程服務(wù)器進(jìn)行通訊,將上線信息上傳到遠(yuǎn)程服務(wù)器上。因此:
[0053]其中在步驟23進(jìn)一步包括通訊步驟,具體為:與應(yīng)用程序的服務(wù)器通訊,獲得服務(wù)器的指令,并把本地信息上傳到服務(wù)器上。
[0054]其中步驟23,所述執(zhí)行所述應(yīng)用程序掛載在所述公共SERVICE上的監(jiān)聽到該事件之后的處理操作所對(duì)應(yīng)的指令,其指令對(duì)該事件的處理操作的權(quán)限基于該應(yīng)用程序的權(quán)限。而 Android 系統(tǒng)在 /system/core/private/android_filesystem_config.h 頭文件中對(duì)應(yīng)用程序作了權(quán)限定義,且權(quán)限僅基于應(yīng)用程序設(shè)置,所以所述公共SERVICE執(zhí)行應(yīng)用程序所掛載的命令對(duì)該事件的操作基于用戶對(duì)該應(yīng)用程序權(quán)限的設(shè)置,不會(huì)給用戶帶來額外風(fēng)險(xiǎn)。[0055]在本發(fā)明的一個(gè)實(shí)施例中,該實(shí)施例公共SERVICE和應(yīng)用程序的關(guān)系圖例參見圖4,所述公共SERVICE具有腳本語言解釋器,換言之,所述公共SERVICE通過腳本語言解釋器實(shí)現(xiàn)通用服務(wù)功能,相應(yīng)地,本發(fā)明方法步驟22,23所述應(yīng)用程序掛載在公共SERVICE上的指令使用的是腳本語言指令,所述腳本語言是指相對(duì)于普通的程序來說,不需要編譯就能執(zhí)行的程序體系,腳本語言就是一個(gè)在運(yùn)行過程中通過腳本語言解釋器來執(zhí)行程序的體系,本腳本語言提供一個(gè)指令集合,給應(yīng)用程序按照自己的業(yè)務(wù)邏輯,編制自己的腳本程序,這樣應(yīng)用程序?qū)⒛_本程序掛載在到公共Service,由公共Service負(fù)責(zé)監(jiān)聽和執(zhí)行。實(shí)現(xiàn)了應(yīng)用程序本地服務(wù)共享,解決了智能移動(dòng)終端操作系統(tǒng)上應(yīng)用程序安裝太多service而導(dǎo)致的消耗手機(jī)的Cpu、內(nèi)存、帶寬等資源問題。在本發(fā)明中所掛載的指令使用的腳本語言指令具體為以下指令集合:
[0056]監(jiān)聽指令集合:
[0057]Listen call:監(jiān)聽 I 個(gè)來電;
[0058]Listen SM:監(jiān)聽 I 個(gè)短信;
[0059]Listen network:監(jiān)聽網(wǎng)絡(luò)通訊;
[0060]Listen file:監(jiān)聽I(yíng)次文件操作;
[0061]Listen app:監(jiān)聽I(yíng)個(gè)應(yīng)用程序;
[0062]調(diào)用公共服務(wù)指令集合:
[0063]Sysoperation:調(diào)用公共服務(wù)程序的功能,包含電話操作,短信操作,郵件操作,文件操作,通信操作等;
[0064]調(diào)用應(yīng)用程序指令集合:
[0065]Appoperation:調(diào)用應(yīng)用程序自己的功能,由應(yīng)用程序通過標(biāo)準(zhǔn)的app接口實(shí)現(xiàn);
[0066]數(shù)學(xué)和邏輯操作符號(hào)及語句集合:
[0067]數(shù)學(xué)和邏輯操作符號(hào):+,_,X, /,and, or,<,>等;
[0068]分支處理:ifthen else ;
[0069]循環(huán)處理:dowhile ;for ;
[0070]公共屬性集合:
[0071]Protocol:連接使用的是哪一種協(xié)議例如:QQ使用Μ)Ρ ;
[0072]socket_type stream:數(shù)據(jù)包封裝類型,例如瀏覽器使用TCP ;
[0073]wait:程序運(yùn)行方式:Multi_threaded 與 single-threaded ;
[0074]instances number:在同一時(shí)間之內(nèi),同一個(gè)服務(wù)可以允許的連接數(shù)量;
[0075]nice:程序優(yōu)先級(jí),越小代表該程序越優(yōu)先被執(zhí)行;
[0076]server program:完整被調(diào)用的應(yīng)用程序全路徑和名稱;
[0077]env:這一個(gè)項(xiàng)目可以設(shè)定程序的環(huán)境變量。
[0078]在本發(fā)明的另一個(gè)實(shí)施例中,該實(shí)施例公共SERVICE和應(yīng)用程序的關(guān)系圖例參見圖5,所述公共SERVICE與既有后臺(tái)SERVICE有開放接口,換言之,公共SERVICE通過后臺(tái)SERVICE實(shí)現(xiàn)通用服務(wù)功能,相應(yīng)地,其中步驟22,23所述應(yīng)用程序掛載在公共SERVICE上的指令是:
[0079]包含有應(yīng)用程序調(diào)用既有后臺(tái)SERVICE服務(wù)的功能模塊指令,和應(yīng)用程序自行開發(fā)的個(gè)性功能模塊指令的指令包。[0080]這樣,應(yīng)用程序?qū)⒅噶畎鼟燧d在公共Service上,由公共Service負(fù)責(zé)監(jiān)聽和執(zhí)行,實(shí)現(xiàn)了應(yīng)用程序之間的本地服務(wù)共享,解決了移動(dòng)終端操作系統(tǒng)上應(yīng)用程序安裝太多service而導(dǎo)致的消耗手機(jī)的Cpu、內(nèi)存、帶寬等資源問題;其中所述應(yīng)用程序自行開發(fā)的個(gè)性功能模塊在公共SERVICE中留有開放接口,其他應(yīng)用程序可通過掛載到公共SERVICE共享該個(gè)性功能模塊。
[0081]本發(fā)明方法在具體實(shí)施時(shí),公共SERVICE的調(diào)度程序具體由C語言實(shí)現(xiàn),利用C語言實(shí)現(xiàn)管理所有的應(yīng)用程序的接口,管理哪些應(yīng)用程序可以獲得哪些權(quán)限,將該調(diào)度程序編譯成so,并放在Iinux啟動(dòng)目錄中,然后java通過jni接口調(diào)用,并管理所有的應(yīng)用程序服務(wù)。本發(fā)明公共SERVICE的調(diào)度程序具體由C語言實(shí)現(xiàn)的理由是:因?yàn)閖ava具有容易被反編譯被破解的缺陷,用C語言實(shí)現(xiàn)對(duì)公共SERVICE各個(gè)接口的調(diào)用可以使手機(jī)用戶更加的安全。
[0082]本發(fā)明提供了一種實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的裝置。該裝置具體為一個(gè)公共SERVICE,通過這個(gè)公共service,可以同時(shí)監(jiān)聽所有服務(wù)端口并提供通用服務(wù),給其他應(yīng)用程序掛載自己的監(jiān)聽目標(biāo)和處理指令,實(shí)現(xiàn)了移動(dòng)終端操作系統(tǒng)上的應(yīng)用程序本地服務(wù)共享。包括:
[0083]監(jiān)聽單元:用于監(jiān)聽用戶事件,并在監(jiān)聽到事件時(shí),向查詢單元發(fā)送監(jiān)聽到所述用戶事件的消息;
[0084]查詢單元:用于接收監(jiān)聽單元發(fā)來的消息,根據(jù)所述消息在指令掛載單元保存的掛載在公共SERVICE上的應(yīng)用程序的指令中查詢出監(jiān)聽到所述用戶事件之后處理操作所對(duì)應(yīng)的指令,并向執(zhí)行單元發(fā)送執(zhí)行所述處理操作所對(duì)應(yīng)的指令的消息;
[0085]執(zhí)行單元:用于接收查詢單元發(fā)來的消息,執(zhí)行在指令掛載單元中保存的所述應(yīng)用程序掛載在所述公共SERVICE上的監(jiān)聽到該事件之后的處理操作所對(duì)應(yīng)的指令;
[0086]指令掛載單元:用于保存和刪除掛載在公共SERVICE上的應(yīng)用程序指令。
[0087]在實(shí)際應(yīng)用中,當(dāng)一個(gè)新安裝的應(yīng)用程序安裝到智能移動(dòng)終端操作系統(tǒng),例如Android系統(tǒng)上后,應(yīng)用程序可能會(huì)請(qǐng)求掛載到公共SERVICE上,則公共SERVICE需要接收應(yīng)用程序的指令的掛載,因而指令掛載單元進(jìn)一步用于接收應(yīng)用程序的掛載請(qǐng)求,保存所述應(yīng)用程序掛載在所述公共SERVICE上的指令。
[0088]在本發(fā)明具體實(shí)施時(shí),為了確保公共SERVICE順利接收所述應(yīng)用程序操作指令的掛載,指令掛載單元還用于在接收掛載到公共SERVICE的應(yīng)用程序的掛載請(qǐng)求時(shí),對(duì)掛載進(jìn)行管理,具體為:
[0089]指令掛載單元接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還在公共service的內(nèi)存空間創(chuàng)建一個(gè)該應(yīng)用程序的數(shù)據(jù)空間;
[0090]指令掛載單元接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還檢查指令的合法性,如果發(fā)現(xiàn)錯(cuò)誤,則通知應(yīng)用程序掛載失?。?br>
[0091]指令掛載單元接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還檢查應(yīng)用程序的私有service,如果發(fā)現(xiàn)啟動(dòng),則強(qiáng)制關(guān)閉;
[0092]指令掛載單元接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還檢查應(yīng)用程序的開放接口api ;
[0093]指令掛載單元接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還將該應(yīng)用程序設(shè)置為公共服務(wù)隊(duì)列成員。
[0094]在實(shí)際應(yīng)用中,經(jīng)常會(huì)發(fā)生應(yīng)用程序被卸載事件,在應(yīng)用程序被卸載之后,掛載在公共SERVICE上的所述被卸載應(yīng)用程序的指令同時(shí)不需要再被執(zhí)行,因此:
[0095]監(jiān)聽單元進(jìn)一步用于判斷監(jiān)聽到的事件是否是應(yīng)用程序被卸載事件,如果是,則監(jiān)聽單元通知指令掛載單元?jiǎng)h除所述應(yīng)用程序掛載在公共SERVICE上的指令。
[0096]為了不讓公共SERVICE頻繁提供或調(diào)用相應(yīng)的服務(wù)進(jìn)程導(dǎo)致系統(tǒng)性能下降,因此:
[0097]查詢單元進(jìn)一步用于:判斷找出的應(yīng)用程序的數(shù)量大于標(biāo)準(zhǔn)值時(shí),通知部分應(yīng)用程序啟動(dòng)私有SERVICE,所述部分應(yīng)用程序至少是I個(gè);相應(yīng)地,在執(zhí)行單元執(zhí)行指令時(shí),該指令不包括所述啟動(dòng)私有SERVICE的應(yīng)用程序的指令。
[0098]為了與應(yīng)用程序的服務(wù)器之間建立通訊連接,該裝置進(jìn)一步包括通訊單元,具體用于:與應(yīng)用程序的服務(wù)器通訊,獲得服務(wù)器的指令,并把本地信息上傳到服務(wù)器上。
[0099]在本發(fā)明的一個(gè)實(shí)施例中,參見圖6,該裝置,即公共SERVICE具有腳本語言解釋器,相應(yīng)地,查詢單元,執(zhí)行單元,指令掛載單元所述的掛載在公共SERVICE上的指令具體使用的是腳本語言。
[0100]在本發(fā)明的另一個(gè)實(shí)施例中,參見圖7,該裝置,即公共SERVICE與后臺(tái)SERVICE有開放接口,相應(yīng)地,查詢單元,執(zhí)行單元,指令掛載單元所述的掛載在公共SERVICE上的指令具體使用的是:
[0101]應(yīng)用程序調(diào)用后臺(tái)SERVICE服務(wù)的功能模塊指令,
[0102]和應(yīng)用程序自行開發(fā)的個(gè)性功能模塊指令。
[0103]需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備
所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)......”限定的要素,并不排
除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0104]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的方法,其特征在于,在公共服務(wù)SERVICE上掛載了應(yīng)用程序的指令,該方法具體包括: 1.1、監(jiān)聽到用戶事件; 1.2、從掛載在公共SERVICE上的應(yīng)用程序的指令中,查詢出監(jiān)聽到所述用戶事件之后處理操作所對(duì)應(yīng)的指令; 1.3、執(zhí)行所述掛載在所述公共SERVICE上的監(jiān)聽到所述用戶事件之后的處理操作所對(duì)應(yīng)的指令。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括公共SERVICE接收應(yīng)用程序掛載的步驟,公共SERVICE接收應(yīng)用程序掛載的步驟具體為: 2.1、公共SERVICE收到應(yīng)用程序的掛載請(qǐng)求; 2.2、公共SERVICE接收所述應(yīng)用程序的指令的掛載。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在步驟2.1和步驟2.2之間還包括以下步驟的全部、任意一個(gè)或任意組合: 所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還在公共service的內(nèi)存空間創(chuàng)建一個(gè)該應(yīng)用程序的數(shù)據(jù)空間以保存該應(yīng)用程序的指令和臨時(shí)數(shù)據(jù); 所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還檢查指令的合法性,如果發(fā)現(xiàn)錯(cuò)誤,則通知應(yīng)用程序掛載失??;` 所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還檢查應(yīng)用程序的私有service,如果發(fā)現(xiàn)啟動(dòng),則強(qiáng)制關(guān)閉; 所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還檢查應(yīng)用程序的開放接口 api以確保指令能正確執(zhí)行; 所述公共SERVICE接收所述應(yīng)用程序的掛載請(qǐng)求時(shí),還將該應(yīng)用程序設(shè)置為公共服務(wù)隊(duì)列成員。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述監(jiān)聽到用戶事件具體為監(jiān)聽到所述用戶事件所對(duì)應(yīng)的服務(wù)端口的變化。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟1.1還包括判斷所述監(jiān)聽到用戶事件是否是應(yīng)用程序被卸載事件,如果是,則相應(yīng)該方法進(jìn)一步包括自動(dòng)把該應(yīng)用程序掛載的指令從公共service刪除。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟1.2進(jìn)一步包括判斷找出的應(yīng)用程序的數(shù)量大于標(biāo)準(zhǔn)值時(shí),通知至少I個(gè)應(yīng)用程序啟動(dòng)私有SERVICE ;相應(yīng)地,步驟1.3所述應(yīng)用程序不包括所述啟動(dòng)私有SERVICE的應(yīng)用程序。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括通訊步驟,具體為:與應(yīng)用程序的服務(wù)器通訊,獲得服務(wù)器的指令,并把本地信息上傳到服務(wù)器上。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述掛載到公共SERVICE的應(yīng)用程序的指令權(quán)限基于該應(yīng)用程序的權(quán)限。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述公共SERVICE進(jìn)一步包括腳本語言解釋器,相應(yīng)地,步驟1.2和1.3所述掛載在公共SERVICE上的指令具體使用的是腳本語言指令。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述腳本語言指令具體包括:監(jiān)聽指令集合; 調(diào)用公共服務(wù)指令集合; 調(diào)用應(yīng)用程序指令集合; 數(shù)學(xué)和邏輯操作符號(hào)及語句集合; 公共屬性集合。
11.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述公共SERVICE進(jìn)一步與后臺(tái)SERVICE服務(wù)有接口,步驟1.2和1.3所述掛載在公共SERVICE上的應(yīng)用程序的指令包括: 應(yīng)用程序調(diào)用后臺(tái)SERVICE服務(wù)的功能模塊指令, 和應(yīng)用程序自行開發(fā)的個(gè)性功能模塊指令。
12.—種實(shí)現(xiàn)移動(dòng)終端操作系統(tǒng)上的本地服務(wù)共享的裝置,其特征在于,該裝置具體為一個(gè)公共SERVICE,該公共SERVICE具體包括: 監(jiān)聽單元:用于監(jiān)聽用戶事件,并在監(jiān)聽到事件時(shí),向查詢單元發(fā)送監(jiān)聽到所述用戶事件的消息; 查詢單元:用于接收監(jiān)聽單元發(fā)來的消息,根據(jù)所述消息在指令掛載單元保存的掛載在公共SERVICE上的應(yīng)用程序的指令中查詢出監(jiān)聽到所述用戶事件之后處理操作所對(duì)應(yīng)的指令,并向執(zhí)行單元發(fā)送執(zhí)行所述處理操作所對(duì)應(yīng)的指令的消息; 執(zhí)行單元:用于接收查詢單元發(fā)來的消息,執(zhí)行在指令掛載單元中保存的所述應(yīng)用程序掛載在所述公共SERVICE上的監(jiān)聽到該事件之后的處理操作所對(duì)應(yīng)的指令; 指令掛載單元:用于保存和刪除掛載在公共SERVICE上的應(yīng)用程序指令。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于指令掛載單元進(jìn)一步用于接收應(yīng)用程序的掛載請(qǐng)求,保存所述應(yīng)用程序請(qǐng)求掛載在所述公共SERVICE上的指令。
14.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述監(jiān)聽單元進(jìn)一步用于判斷監(jiān)聽到的事件是否是應(yīng)用程序被卸載事件,如果是,則所述監(jiān)聽單元通知所述指令掛載單元?jiǎng)h除所述應(yīng)用程序掛載在所述公共SERVICE上的指令。
15.根據(jù)權(quán)利要求12所述的裝置,其特征在于,該裝置進(jìn)一步包括腳本語言解釋器,相應(yīng)地,查詢單元,執(zhí)行單元,指令掛載單元所述的掛載在公共SERVICE上的指令具體使用的是腳本語目。
16.根據(jù)權(quán)利要求12所述的裝置,其特征在于,該裝置進(jìn)一步與后臺(tái)SERVICE有開放接口,查詢單元,執(zhí)行單元,指令掛載單元所述的掛載在公共SERVICE上的指令具體包括: 應(yīng)用程序調(diào)用后臺(tái)SERVICE服務(wù)的功能模塊指令, 和應(yīng)用程序自行開發(fā)的個(gè)性功能模塊指令。
【文檔編號(hào)】H04M1/725GK103428357SQ201210168169
【公開日】2013年12月4日 申請(qǐng)日期:2012年5月25日 優(yōu)先權(quán)日:2012年5月25日
【發(fā)明者】趙真利 申請(qǐng)人:盛樂信息技術(shù)(上海)有限公司