一種通知系統(tǒng)屬性更新的方法和裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種通知系統(tǒng)屬性更新的方法和裝置,涉及軟件開發(fā)技術(shù)領(lǐng)域,能夠解決系統(tǒng)屬性的通知機(jī)制通知的目標(biāo)不明確及無法通知的問題。其方法為:在用戶級程序啟動時,創(chuàng)建通信單元,用于與屬性服務(wù)進(jìn)行進(jìn)程間通信,屬性服務(wù)用于接收進(jìn)程啟動后的注冊消息,包括進(jìn)程對應(yīng)的監(jiān)聽器和監(jiān)聽的屬性列表;啟動屬性服務(wù),并循環(huán)等待通信單元發(fā)送的通知消息,包括更新的系統(tǒng)屬性及更新后的值;當(dāng)系統(tǒng)屬性更新時,調(diào)用用戶級程序的進(jìn)程,通過通信單元向?qū)傩苑?wù)發(fā)送通知消息;遍歷注冊到屬性服務(wù)中的每個監(jiān)聽器和每個監(jiān)聽器監(jiān)聽的屬性列表,確定監(jiān)聽系統(tǒng)屬性的監(jiān)聽器;將通知消息通知給監(jiān)聽器對應(yīng)的進(jìn)程。本發(fā)明實(shí)施例用于Android系統(tǒng)設(shè)備的開發(fā)和調(diào)試。
【專利說明】
一種通知系統(tǒng)屬性更新的方法和裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及軟件開發(fā)技術(shù)領(lǐng)域,尤其涉及一種通知系統(tǒng)屬性更新的方法和裝置。
【背景技術(shù)】
[0002] 隨著安卓(Android)產(chǎn)品的普及和客制化的持續(xù)深入,其產(chǎn)品開發(fā)過程中越來越 多的用到系統(tǒng)屬性(System Properties)機(jī)制,該機(jī)制可以快捷地記錄變量到內(nèi)存或存儲 中,讀取和寫入調(diào)用簡單,廣泛用于狀態(tài)標(biāo)志和跨進(jìn)程的通信等,提升了系統(tǒng)的開發(fā)效率。
[0003] 目前的機(jī)制中,對系統(tǒng)任一屬性值的變化進(jìn)行通知時,并不知道哪些進(jìn)程對該屬 性變化感興趣,因此,會通知到通過屬性值的修改進(jìn)程能獲取到的所有實(shí)現(xiàn)了 Binder通信 機(jī)制的其它進(jìn)程,包括對該屬性感興趣的進(jìn)程和不感興趣的進(jìn)程,而且在對系統(tǒng)任一屬性 值的變化進(jìn)行通知時,只是通知了系統(tǒng)屬性發(fā)生了變化,當(dāng)進(jìn)程接收到該通知時,并不知道 具體是哪個系統(tǒng)屬性發(fā)生了變化,該進(jìn)程會將進(jìn)程關(guān)注的所有系統(tǒng)屬性的值都重新獲取一 遍,從而實(shí)現(xiàn)數(shù)據(jù)同步的目的。此外,任一屬性值發(fā)生變化,都需要在代碼中主動調(diào)用接口 進(jìn)行屬性變化的通知,但是若通過串口或adb工具包輸入setprop命令以改變屬性值時無法 通過Binder通信機(jī)制通知給其它關(guān)聯(lián)的進(jìn)程,使得對該屬性變化感興趣的進(jìn)程無法得到通 知,進(jìn)而無法保證調(diào)試的實(shí)時性。為了彌補(bǔ)該缺陷,進(jìn)程中建立有一個線程,會每隔固定的 時間查詢一次該進(jìn)程感興趣的系統(tǒng)屬性的值,即采用輪詢的方式獲取系統(tǒng)屬性的實(shí)時性。
[0004] 因此,目前的機(jī)制中,當(dāng)系統(tǒng)屬性值發(fā)生變化時,其通知機(jī)制所通知的目標(biāo)并不明 確,或者出現(xiàn)無法通知需要以輪詢的方式獲取系統(tǒng)屬性值的情況,這將影響代碼邏輯和系 統(tǒng)的運(yùn)行效率。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供一種通知系統(tǒng)屬性更新的方法和裝置,能夠解決系統(tǒng)屬性的通 知機(jī)制通知的目標(biāo)不明確及無法通知的問題。
[0006] 第一方面,提供一種通知系統(tǒng)屬性更新的方法,包括:
[0007] 在用戶級程序啟動時,創(chuàng)建一通信單元,所述通信單元用于與屬性服務(wù)進(jìn)行進(jìn)程 間通信,所述屬性服務(wù)用于接收進(jìn)程啟動后的注冊消息,所述注冊消息包括所述進(jìn)程對應(yīng) 的監(jiān)聽器和所述監(jiān)聽器監(jiān)聽的屬性列表;
[0008] 啟動所述屬性服務(wù),并循環(huán)等待通過所述通信單元發(fā)送的通知消息,所述通知消 息包括更新的系統(tǒng)屬性及所述系統(tǒng)屬性更新后的值;
[0009] 當(dāng)獲知所述系統(tǒng)屬性更新時,通過所述通信單元向所述屬性服務(wù)發(fā)送所述通知消 息;
[0010] 遍歷注冊到所述屬性服務(wù)中的每個監(jiān)聽器和所述每個監(jiān)聽器監(jiān)聽的屬性列表,確 定監(jiān)聽所述系統(tǒng)屬性的監(jiān)聽器;
[0011] 將所述通知消息通知給監(jiān)聽所述系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程。
[0012] 第二方面,提供一種通知系統(tǒng)屬性更新的裝置,包括:
[0013] 啟動單元,用于啟動用戶級程序;
[0014] 創(chuàng)建單元,用于創(chuàng)建一通信單元,所述通信單元用于與屬性服務(wù)進(jìn)行進(jìn)程間通信, 所述屬性服務(wù)用于接收進(jìn)程啟動后的注冊消息,所述注冊消息包括所述進(jìn)程對應(yīng)的監(jiān)聽器 和所述監(jiān)聽器監(jiān)聽的屬性列表;
[0015] 所述啟動單元還用于,啟動所述屬性服務(wù),并循環(huán)等待所述通信單元發(fā)送的通知 消息,所述通知消息包括更新的系統(tǒng)屬性及所述系統(tǒng)屬性更新后的值;
[0016] 控制單元,用于當(dāng)獲知所述系統(tǒng)屬性更新時,通過所述通信單元向所述屬性服務(wù) 發(fā)送所述通知消息;
[0017] 遍歷單元,用于遍歷注冊到所述屬性服務(wù)中的每個監(jiān)聽器和所述每個監(jiān)聽器監(jiān)聽 的屬性列表;
[0018] 確定單元,用于確定監(jiān)聽所述系統(tǒng)屬性的監(jiān)聽器;
[0019] 通知單元,用于將所述通知消息通知給監(jiān)聽所述系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程。
[0020] 本發(fā)明實(shí)施例提供一種通知系統(tǒng)屬性更新的方法和裝置,在用戶級程序啟動時, 創(chuàng)建一通信單元,通信單元用于與屬性服務(wù)進(jìn)行進(jìn)程間通信,屬性服務(wù)用于接收進(jìn)程啟動 后的注冊消息,注冊消息包括進(jìn)程對應(yīng)的監(jiān)聽器和監(jiān)聽器監(jiān)聽的屬性列表;啟動屬性服務(wù), 并循環(huán)等待通過通信單元發(fā)送的通知消息,通知消息包括更新的系統(tǒng)屬性及系統(tǒng)屬性更新 后的值;當(dāng)獲知系統(tǒng)屬性更新時,通過通信單元向?qū)傩苑?wù)發(fā)送通知消息;遍歷注冊到屬性 服務(wù)中的每個監(jiān)聽器和每個監(jiān)聽器監(jiān)聽的屬性列表,確定監(jiān)聽系統(tǒng)屬性的監(jiān)聽器;將通知 消息通知給監(jiān)聽系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程。這樣,由于進(jìn)程設(shè)有對應(yīng)的監(jiān)聽器和監(jiān)聽 器監(jiān)聽的屬性列表,即進(jìn)程感興趣的屬性的列表,并注冊在屬性服務(wù)中,對于現(xiàn)有技術(shù)中系 統(tǒng)屬性更新通知不明確的問題,本申請可使得在某一系統(tǒng)屬性更新時,通過用戶級程序創(chuàng) 建的通信單元向?qū)傩苑?wù)發(fā)送通知,以通知屬性服務(wù)更新的系統(tǒng)屬性以及更新后的值,而 后通過遍歷屬性服務(wù)中的監(jiān)聽器以及監(jiān)聽器監(jiān)聽的屬性列表確定監(jiān)聽該系統(tǒng)屬性的監(jiān)聽 器,以便將通知消息通知給該系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程,使得通知目標(biāo)明確,不需要像 現(xiàn)有技術(shù)中的進(jìn)程在獲知系統(tǒng)屬性變化時還需重新獲取一遍進(jìn)程所關(guān)注的系統(tǒng)屬性;對于 現(xiàn)有技術(shù)中如果通過串口或adb工具包更新系統(tǒng)屬性的值時由于受制于Binder進(jìn)程間通 信,無法進(jìn)行系統(tǒng)屬性更新的通知的問題,本申請中在系統(tǒng)屬性更新時,可調(diào)用到用戶級程 序中,以便控制用戶級程序與屬性服務(wù)進(jìn)行通信,進(jìn)而將更新的系統(tǒng)屬性通知到注冊到屬 性服務(wù)中對系統(tǒng)屬性感興趣的進(jìn)程,不受制于Binder進(jìn)程間通信。因此,本發(fā)明可解決系統(tǒng) 屬性的通知機(jī)制通知的目標(biāo)不明確及無法通知的問題,進(jìn)而提升了系統(tǒng)開發(fā)和調(diào)試過程的 執(zhí)行效率,保證了系統(tǒng)的穩(wěn)定性和信息的實(shí)時性。
【附圖說明】
[0021]為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中 所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí) 施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖 獲得其他的附圖。
[0022] 圖1為本發(fā)明實(shí)施例提供的一種設(shè)備的結(jié)構(gòu)示意圖;
[0023] 圖2為本發(fā)明實(shí)施例提供的一種通知系統(tǒng)屬性更新的方法的流程示意圖;
[0024] 圖3為本發(fā)明實(shí)施例提供的一種實(shí)現(xiàn)自動控制動態(tài)背光/MEMC功能過程中通知系 統(tǒng)屬性更新的流程圖;
[0025] 圖4為本發(fā)明實(shí)施例提供的一種通知系統(tǒng)屬性更新的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0026] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0027]針對目前的Android設(shè)備上對于系統(tǒng)屬性更新的通知機(jī)制的缺陷,需要在本發(fā)明 執(zhí)行的流程之前,運(yùn)用程序設(shè)計語言建立用于本發(fā)明的接口和對該接口的編譯封裝,包括 用于監(jiān)聽系統(tǒng)屬性更新的接口即監(jiān)聽器(Property Observer),以及對該接口的封裝,監(jiān)聽 器用于監(jiān)測進(jìn)程所關(guān)注的系統(tǒng)屬性的變化;用于接收監(jiān)聽器注冊和注銷監(jiān)聽器的屬性服務(wù) (Property Service)的接口以及對該接口的封裝。系統(tǒng)中啟動運(yùn)行的任一個進(jìn)程可以對應(yīng) 至少一個監(jiān)聽器,一個監(jiān)聽器可以監(jiān)聽該進(jìn)程所關(guān)注的至少一個系統(tǒng)屬性。當(dāng)任一進(jìn)程調(diào) 用設(shè)置系統(tǒng)屬性的函數(shù)更新系統(tǒng)屬性時,利用本發(fā)明建立的監(jiān)聽器和屬性服務(wù),可實(shí)現(xiàn)將 該系統(tǒng)屬性的更新跨進(jìn)程通知到對該系統(tǒng)屬性感興趣的其它進(jìn)程。
[0028] 對于監(jiān)聽器的建立和封裝來說,a i d 1 (andro i d i nt erf ace def i n i t i on language)為進(jìn)程通信接口的描述,可運(yùn)用程序設(shè)計語言建立一個用于跨進(jìn)程通信的 IPropertyObserver ? aidl 文件,約定一個接口為oneway void onChange (in String property,int userid),用于監(jiān)聽的系統(tǒng)屬性(property)發(fā)生改變時,Property Service 回調(diào)該接口通知給其它關(guān)注該系統(tǒng)屬性的進(jìn)程。而后,對該IPropertyObserver .aidl文件 進(jìn)行編譯,生成IPropertyObserver. stub,為存根抽像類,可在應(yīng)用進(jìn)程(Process Application)中使用。而后,對IPropertyObserver. stub進(jìn)行封裝生成java代碼,記為 PropertyObserver ? java,提供了對于系統(tǒng)內(nèi)屬性變化的監(jiān)聽,即對監(jiān)聽器的封裝,為一個 抽象類。PropertyOb server, java封裝 了上述 IPropertyObserver .stub 的具體類 Transport,將 IPropertyObserver ? stub 作為PropertyObserver ? java 的內(nèi)部類,用于與過 程系統(tǒng)服務(wù)(process system server)進(jìn)程中的IPropertyObserver? proxy進(jìn)行通信。 Transport繼承了 IPropertyObserver ? stub,作為Binder通信的 server端,其構(gòu)造方法中傳 入有Property Observer的實(shí)例,并復(fù)寫了上述onChange的方法,即調(diào)用接口通知其他進(jìn)程 系統(tǒng)屬性的方法。當(dāng)一進(jìn)程啟動運(yùn)行后,Process Appli cat ion可以將該進(jìn)程對應(yīng)的 PropertyObserver通過Android Binder機(jī)制注冊到Property Service中,但是實(shí)際上是將 property Observer中的Transport以IPropertyObserver? proxy的形式注冊到了Property Service中。當(dāng)系統(tǒng)屬性更新時,Property Service通過IPropertyObserver.proxy將系統(tǒng) 屬性更新的事件通知到Process Application中的 IPropertyObserver ? stub (Transport), IPropertyObserver. stub (Transport)再通知至lj PropertyObserver. java,由 PropertyObserver ? java 繼續(xù)通知到PropertyObserver ? java 對應(yīng)的進(jìn)程中。
[0029] 此外,該P(yáng)ropertyObserver ? java也提供了注銷Property Observer的方法,例如 當(dāng)一進(jìn)程停止運(yùn)行時,進(jìn)程對應(yīng)的P r 〇 p e r t y 0 b s e r v e r也會被注銷。 PropertyObserver ? java還包括一些可以提供給使用Property Observer的使用者可以調(diào) 用的方法接口,例如l)addWatchingProperty(String property),用于提供給用戶調(diào)用,以 對Property Observer添加其所關(guān)注的系統(tǒng)屬性;2)getWatchingProperties(),用于獲取 Property Observer關(guān)注的所有的系統(tǒng)屬性;3)getProperty0bserver(),用于向調(diào)用該接 口的進(jìn)程返回一個Iproperty Observer(Transport)類型的對象,即Iproperty Observer 的實(shí)例;4)releaseProperty0bserver(),用于銷毀3)中的對象。
[0030] 對于Property Service的接口以及封裝來說,可以建立一個用于跨進(jìn)程通信的 IPropertyService ? aidl文件,約定兩個接口 : 1) void unregisterProperty Observer (IpropertyObserver observer),用于在Property Service中注銷監(jiān)聽器;2) void registerPropertyObserver(in ArrayList<String>)properties,IpropertyObserver observer, int userHandle),用于在Property Service中注冊監(jiān)聽器,properties為監(jiān)聽 器需要監(jiān)聽的屬性列表。而后,建立PropertyService . java,提供了對于屬性服務(wù)的封裝, 其中定義了Property Service繼承自 IPropertyService ? stub,作為Binder通信的server 端,所有的Property Observer均注冊到該server中,當(dāng)系統(tǒng)屬性發(fā)生變化時,Property Service會對注冊到Property Service中的Property Observer進(jìn)行遍歷通知,以便在 Property Observer所監(jiān)聽的屬性列表中存在該變化的系統(tǒng)屬性時,將該通知告知給 Property Observer對應(yīng)的其它進(jìn)程。其中,當(dāng)Property Observer注冊到Property Service中后,可以將Property Service加入到用于記錄各個Property Service的列表記 錄中,并記錄Property Service戶斤監(jiān)聽的properties。當(dāng)需要注銷Property Observer時, Property Service從列表記錄中刪除該P(yáng)roperty Observer,并刪除Property Observer所 監(jiān)聽的properties。
[0031 ]應(yīng)用上述對于Binder通信的兩個server端:Property Observer和Property Service的建立和封裝,為了解決系統(tǒng)屬性的通知機(jī)制通知的目標(biāo)不明確及無法通知的問 題,本發(fā)明實(shí)施例提供一種通知系統(tǒng)屬性更新的方法,該方法可以應(yīng)用于具有Android系統(tǒng) 的設(shè)備,該設(shè)備的硬件結(jié)構(gòu)圖可以如圖1所示,包括處理器101、存儲器102、用戶接口 103、網(wǎng) 絡(luò)接口 104以及通信總線105。本領(lǐng)域或普通技術(shù)人員可以理解,圖1所示的結(jié)構(gòu)僅為示意, 其并不對設(shè)備的結(jié)構(gòu)造成限定,或者具有與圖1所示不同的配置。通信總線105用于設(shè)備中 各組成部件之間的通信,用戶接口 103用于插接外部設(shè)備,例如電腦、鼠標(biāo)及鍵盤等,以接收 用戶輸入的信息;網(wǎng)絡(luò)接口 104用于與外部進(jìn)行互相通信,存儲器102可用于存儲軟件程序 及模塊,數(shù)據(jù)庫,如本發(fā)明實(shí)施例中通知系統(tǒng)屬性更新的方法及裝置對應(yīng)的程序指令/模 塊。處理器101通過運(yùn)行存儲器102內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù) 據(jù)處理,例如,處理器101通過調(diào)用存儲器102中的通知系統(tǒng)屬性更新的方法的應(yīng)用程序,以 解決系統(tǒng)屬性的通知機(jī)制通知的目標(biāo)不明確及無法通知的問題。
[0032] 如圖2所示,該方法可以包括:
[0033] 201、設(shè)備在用戶級程序啟動時,創(chuàng)建通信單元,通信單元用于與屬性服務(wù)進(jìn)行進(jìn) 程間通信,屬性服務(wù)用于接收進(jìn)程啟動后的注冊消息,注冊消息包括進(jìn)程對應(yīng)的監(jiān)聽器和 監(jiān)聽器監(jiān)聽的屬性列表。
[0034]本發(fā)明實(shí)施例中的方法可用于對Android系統(tǒng)的設(shè)備的開發(fā)和調(diào)試過程,在該過 程中可能需要對系統(tǒng)某些屬性進(jìn)行設(shè)置或更改,當(dāng)系統(tǒng)啟動時,其用戶級程序 (initialization,init)首先啟動,當(dāng)init啟動時,可創(chuàng)建一通信單元,用于與Property Service進(jìn)行進(jìn)程間通信,該P(yáng)roperty Service用于接收進(jìn)程啟動后的注冊消息,該注冊消 息包括進(jìn)程對應(yīng)的PropertyObserver和Property Observer監(jiān)聽的屬性列表 (properties)〇
[0035]其中,通信單元可以為消息隊(duì)列、或共享內(nèi)存、或管道等,本申請不做限定。消息隊(duì) 列為一個消息的鏈表,可以把消息看作一個記錄,提供了一種從一個進(jìn)程向另一個進(jìn)程發(fā) 送數(shù)據(jù)塊的方法。共享內(nèi)存為允許兩個不相關(guān)的進(jìn)程訪問同一個邏輯內(nèi)存,是在兩個正在 運(yùn)行的進(jìn)程之間共享和傳遞數(shù)據(jù)的一種非常有效的方式。管道是單向的、先進(jìn)先出的,用于 將一個進(jìn)程的輸出和另一個進(jìn)程的輸入連接在一起。一個進(jìn)程(寫進(jìn)程)在管道的尾部寫入 數(shù)據(jù),另一個進(jìn)程(讀進(jìn)程)可以在管道的頭部讀出數(shù)據(jù)。
[0036] 步驟101過程的程序代碼可以為:
[0038] 202、設(shè)備啟動屬性服務(wù),并循環(huán)等待通過通信單元發(fā)送的通知消息,通知消息包 括更新的系統(tǒng)屬性及系統(tǒng)屬性更新后的值。
[0039]若上述通信單元為消息隊(duì)列,則當(dāng)系統(tǒng)啟動時,Android系統(tǒng)中需要為應(yīng)用程序創(chuàng) 建進(jìn)程的Zygote也啟動,上述process system server進(jìn)程就會啟動,由于process system server進(jìn)程包括Property Service,因此,當(dāng)Zygote啟動后,會將Property Service啟動。 當(dāng)Property Service啟動時,Property Service可以通過Java本地調(diào)用(Java Native Interface,JNI)的方式初始化本地(native)層的屬性更新對象(PropertyChanger),用于 通過消息隊(duì)列接收init進(jìn)程發(fā)送的系統(tǒng)屬性更新的通知消息,相當(dāng)于創(chuàng)建一個消息隊(duì)列的 接收端,通知消息包括更新的系統(tǒng)屬性及系統(tǒng)屬性更新后的值。PropertyChanger用于支持 關(guān)聯(lián)屬性事件的觸發(fā)。
[0040] 203、當(dāng)設(shè)備獲知系統(tǒng)屬性更新時,調(diào)用用戶級程序的進(jìn)程,通過通信單元向?qū)傩?服務(wù)發(fā)送通知消息。
[0041] 當(dāng)需要更新某一系統(tǒng)屬性時,需要在進(jìn)程中設(shè)置實(shí)現(xiàn),當(dāng)任一進(jìn)程調(diào)用設(shè)置屬性 的函數(shù)時,設(shè)備便獲知系統(tǒng)屬性需要更新,可以將設(shè)置屬性的函數(shù)調(diào)用到用戶級程序即 init的進(jìn)程中;而后確定設(shè)置屬性的函數(shù)中系統(tǒng)屬性將要更新后的值與當(dāng)前系統(tǒng)屬性的值 是否相同,若不同,則更新系統(tǒng)屬性的值,并通過init進(jìn)程將系統(tǒng)屬性及系統(tǒng)屬性更新后的 值寫入消息隊(duì)列中,通過PropertyChanger接收消息隊(duì)列發(fā)送的通知消息,并在接收到后向 Property Service發(fā)送通知消息。
[0042]具體地,當(dāng)任一進(jìn)程調(diào)用設(shè)置屬性的函數(shù)即property_set方法時,設(shè)備便獲知系 統(tǒng)屬性需要更新,可以通過Socket機(jī)制調(diào)用到init進(jìn)程中的property_set方法中進(jìn)行設(shè) 置。此時可以在property_set方法中增加property_get的步驟,用以先獲取當(dāng)前的系統(tǒng)屬 性及未更新之前的值,并與該系統(tǒng)屬性待更新后的值進(jìn)行對比,如果不同,則繼續(xù)執(zhí)行 prop erty_s e t方法的邏輯,如果相同,貝ij直接re turn,不需要繼續(xù)執(zhí)行。這樣可以提高系統(tǒng) 的執(zhí)行效率,避免了不必要的代碼邏輯的運(yùn)行,步驟103對應(yīng)的程序代碼可以為:
[0045]當(dāng)確定繼續(xù)執(zhí)行property_set方法的邏輯時,通過init進(jìn)程可以將更新的系統(tǒng)屬 性及更新后的值傳入消息隊(duì)列中,通過init進(jìn)程創(chuàng)建的消息隊(duì)列向PropertyChanger發(fā)送 通知消息,使得PropertyChanger再將通知消息發(fā)送給Property Service,通知消息中包括 更新的系統(tǒng)屬性以及更新后的值。
[0046] 204、設(shè)備遍歷注冊到屬性服務(wù)中的每個監(jiān)聽器和每個監(jiān)聽器監(jiān)聽的屬性列表,確 定監(jiān)聽系統(tǒng)屬性的監(jiān)聽器。
[0047] 當(dāng)Property Service接收到通知消息后,可以通過JNI回調(diào)Property Service中 私有的no t i f y change方法,用以通知對更新的系統(tǒng)屬性感興趣的其它進(jìn)程。具體的,可以通 過notifychange方法遍歷注冊到Property Service中的每個Property Observer以及每個 Property Observer監(jiān)聽的properties,石角定Property Observer監(jiān)聽的properties中是否 包括更新的系統(tǒng)屬性,以確定出監(jiān)聽該系統(tǒng)屬性的Property 0bserver。步驟104對應(yīng)的程 序代碼可以為:
[0050] 205、設(shè)備將通知消息通知給監(jiān)聽系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程。
[0051 ] 當(dāng)確定出監(jiān)聽更新的系統(tǒng)屬性的Property Observer后,Property Service可以 將包括更新的系統(tǒng)屬性及更新后的值的通知消息發(fā)送給確定出的Property Observer,由 于一個進(jìn)程可以對應(yīng)至少一個Property Observer,接收到通知消息的Property Observer 就可以將通知消息發(fā)送給對應(yīng)的進(jìn)程,使得關(guān)注更新的系統(tǒng)屬性的其它進(jìn)程可以及時獲知 系統(tǒng)屬性的更新值,進(jìn)而進(jìn)行其它的邏輯處理。
[0052]舉例來說,Andro i d系統(tǒng)的設(shè)備為具有Andro id系統(tǒng)的電視機(jī),要實(shí)現(xiàn)對于電視機(jī) 的自動控制動態(tài)背光或運(yùn)動估計和運(yùn)動補(bǔ)償(Motion Estimate and Motion Compensation,MEMC)功能,需要在進(jìn)程(Process)A的線程中進(jìn)行屏幕菜單式調(diào)節(jié)方式(0n-Screen Display,0SD)的檢測,當(dāng)檢測到當(dāng)前存在0SD時,進(jìn)程A將persist ? sys ? osd屬性設(shè) 置為1,當(dāng)不存在030時,將口6^181:.85^.〇8(1屬性設(shè)置為0。由于還存在對。6^181:.878.〇8(1 屬性感興趣的其它進(jìn)程例如進(jìn)程B,進(jìn)程B可以根據(jù)persist. sys. osd屬性的變化來執(zhí)行實(shí) 際的開啟、關(guān)閉動態(tài)背光或MEMC的動作?,F(xiàn)有技術(shù)中,有兩種方式實(shí)現(xiàn)進(jìn)程B獲取該 persist. sys. osd屬性值。一種是使用原有的通知機(jī)制,即當(dāng)任一系統(tǒng)屬性變化時,會通知 其他所有進(jìn)程系統(tǒng)屬性發(fā)生變化,包括對該persist, sys .osd屬性感興趣和不感興趣的進(jìn) 程,且當(dāng)進(jìn)程B獲知系統(tǒng)屬性變化時,但是并不知曉哪個系統(tǒng)屬性發(fā)生了變化,會觸發(fā)進(jìn)程B 對感興趣的系統(tǒng)屬性都進(jìn)行查詢,這樣會影響系統(tǒng)的執(zhí)行效率;另一種是當(dāng)通過串口/adb 更新系統(tǒng)屬性時,由于受制于Binder間的通信,不能觸發(fā)進(jìn)程B的查詢,需要在進(jìn)程B中建立 一個線程,每隔n毫秒去查詢一次進(jìn)程B感興趣的系統(tǒng)屬性的值,也會影響系統(tǒng)的執(zhí)行效率。 如圖3所示,為本發(fā)明實(shí)施例提供的一種實(shí)現(xiàn)自動控制動態(tài)背光/MEMC功能過程中通知系統(tǒng) 屬性更新的流程圖。通過本發(fā)明上述實(shí)施例,當(dāng)init進(jìn)程啟動時,電視機(jī)會為init進(jìn)程創(chuàng)建 消息隊(duì)列,而后Property Service也會啟動,消息隊(duì)列可以與Property Service進(jìn)行進(jìn)程 間通信,Property Service可以接收進(jìn)程啟動后的注冊消息,注冊消息包括進(jìn)程對應(yīng)的 Property Observer和 Property Observer監(jiān)聽的properties,例如上述根據(jù) persist. sys. osd屬性值的變化開啟、關(guān)閉動態(tài)背光/MEME的進(jìn)程B啟動運(yùn)行后,會發(fā)送注冊 消息給P r 〇 p e r t y S e r v i c e,注冊消息中包括進(jìn)程B的P r 〇 p e r t y 0 b s e r v e r和 persist ? sys .osd屬性。假設(shè)Property Observer所在的進(jìn)程為進(jìn)程C,當(dāng)需要在進(jìn)程A的線 程中進(jìn)行OSD檢測并需要對persist, sys.osd屬性值進(jìn)行設(shè)置時,會調(diào)用到init進(jìn)程中進(jìn)行 設(shè)置,即控制init進(jìn)程通過消息隊(duì)列向進(jìn)程C中的Property Service發(fā)送通知消息,以通知 Property Service更新的persist ? sys ? osd屬性值。而后電視機(jī)遍歷注冊到Property Service中的每個Property Observer以及每個Property Observer監(jiān)聽的properties,由 于進(jìn)程B對應(yīng)的Property Observer及Property Observer監(jiān)聽的properties注冊在 Property Service 中,該P(yáng)roperties包括上述 persist.sys.osd 屬性,即進(jìn)程B對 persist.sys.osd屬性感興趣,因此,電視機(jī)的Property Serv ice會確定出進(jìn)程B的 Property Observer為監(jiān)聽persist, sys.osd屬性的監(jiān)聽器,而后電視機(jī)將通知消息發(fā)送給 監(jiān)聽persist.sys.osd屬性的Property Observer對應(yīng)的進(jìn)程B,以便進(jìn)程B根據(jù) persist .sys. osd屬性的值是否為1確定動態(tài)背光/MEMC的開關(guān),實(shí)現(xiàn)了對persist .sys. osd 屬性感興趣的進(jìn)程的及時通知,對persist. sys. osd屬性不感興趣的進(jìn)程將不會收到通知 消息。即使通過串口 /adb輸入setprop命令修改persist. sys. osd屬性值時,由于當(dāng)需要更 新系統(tǒng)屬性時,會調(diào)用到init進(jìn)程中進(jìn)行設(shè)置,并通過消息隊(duì)列向Property Service發(fā)送 通知消息,也就是說,當(dāng)通過串口/adb輸入setprop命令修改persist. sys. osd屬性值時,會 調(diào)用到init進(jìn)程中來執(zhí)行系統(tǒng)屬性更新的通知,不受制于Binder間進(jìn)程的通信,提升了系 統(tǒng)的執(zhí)行效率,保證了系統(tǒng)的穩(wěn)定性和信息的實(shí)時性。
[0053]因此,本發(fā)明實(shí)施例提供一種通知系統(tǒng)屬性更新的方法,在用戶級程序啟動時,創(chuàng) 建一通信單元,通信單元用于與屬性服務(wù)進(jìn)行進(jìn)程間通信,屬性服務(wù)用于接收進(jìn)程啟動后 的注冊消息,注冊消息包括進(jìn)程對應(yīng)的監(jiān)聽器和監(jiān)聽器監(jiān)聽的屬性列表;啟動屬性服務(wù),并 循環(huán)等待通過通信單元發(fā)送的通知消息,通知消息包括更新的系統(tǒng)屬性及系統(tǒng)屬性更新后 的值;當(dāng)獲知系統(tǒng)屬性更新時,通過通信單元向?qū)傩苑?wù)發(fā)送通知消息;遍歷注冊到屬性服 務(wù)中的每個監(jiān)聽器和每個監(jiān)聽器監(jiān)聽的屬性列表,確定監(jiān)聽系統(tǒng)屬性的監(jiān)聽器;將通知消 息通知給監(jiān)聽系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程。這樣,由于進(jìn)程設(shè)有對應(yīng)的監(jiān)聽器和監(jiān)聽器 監(jiān)聽的屬性列表,即進(jìn)程感興趣的屬性的列表,并注冊在屬性服務(wù)中,對于現(xiàn)有技術(shù)中系統(tǒng) 屬性更新通知不明確的問題,本申請可使得在某一系統(tǒng)屬性更新時,通過用戶級程序創(chuàng)建 的通信單元向?qū)傩苑?wù)中發(fā)送通知,以通知屬性服務(wù)更新的系統(tǒng)屬性以及更新后的值,而 后通過遍歷屬性服務(wù)中的監(jiān)聽器以及監(jiān)聽器監(jiān)聽的屬性列表確定監(jiān)聽該系統(tǒng)屬性的監(jiān)聽 器,以便將通知消息通知給該系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程,使得通知目標(biāo)明確,不需要像 現(xiàn)有技術(shù)中的進(jìn)程在獲知系統(tǒng)屬性變化時還需重新獲取一遍進(jìn)程所關(guān)注的系統(tǒng)屬性;對于 現(xiàn)有技術(shù)中如果通過串口或adb工具包更新系統(tǒng)屬性的值時由于受制于Binder進(jìn)程間通 信,無法進(jìn)行系統(tǒng)屬性更新的通知的問題,本申請中在系統(tǒng)屬性更新時,可調(diào)用到用戶級程 序中,以便控制用戶級程序與屬性服務(wù)進(jìn)行通信,進(jìn)而將更新的系統(tǒng)屬性通知到注冊到屬 性服務(wù)中對系統(tǒng)屬性感興趣的進(jìn)程,不受制于Binder進(jìn)程間通信。因此,本發(fā)明可解決系統(tǒng) 屬性的通知機(jī)制通知的目標(biāo)不明確及無法通知的問題,進(jìn)而提升了系統(tǒng)開發(fā)和調(diào)試過程的 執(zhí)行效率,保證了系統(tǒng)的穩(wěn)定性和信息的實(shí)時性。
[0054]本發(fā)明實(shí)施例還提供一種通知系統(tǒng)屬性更新的裝置4,如圖4所示,包括:
[0055]啟動單元401,用于啟動用戶級程序;
[0056]創(chuàng)建單元402,用于創(chuàng)建一通信單元,通信單元用于與屬性服務(wù)進(jìn)行進(jìn)程間通信, 屬性服務(wù)用于接收進(jìn)程啟動后的注冊消息,注冊消息包括進(jìn)程對應(yīng)的監(jiān)聽器和監(jiān)聽器監(jiān)聽 的屬性列表;
[0057]啟動單元401還用于,啟動屬性服務(wù),并循環(huán)等待通信單元發(fā)送的通知消息,通知 消息包括更新的系統(tǒng)屬性及系統(tǒng)屬性更新后的值;
[0058]控制單元403,用于當(dāng)獲知系統(tǒng)屬性更新時,通過通信單元向?qū)傩苑?wù)發(fā)送通知消 息;
[0059] 遍歷單元404,用于遍歷注冊到屬性服務(wù)中的每個監(jiān)聽器和每個監(jiān)聽器監(jiān)聽的屬 性列表;
[0060] 確定單元405,用于確定監(jiān)聽系統(tǒng)屬性的監(jiān)聽器;
[0061] 通知單元406,用于將通知消息通知給監(jiān)聽系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程。
[0062] 可選的,通信單元為消息隊(duì)列、共享內(nèi)存或管道中的任一種。
[0063] 可選的,當(dāng)通信單元為消息隊(duì)列時,創(chuàng)建單元402用于:通過JAVA本地調(diào)用JNI初始 化本地層的屬性更新對象,以循環(huán)等待系統(tǒng)屬性更新時通過消息隊(duì)列發(fā)送的通知消息。 [0064] 可選的,控制單元403用于:
[0065]當(dāng)任一進(jìn)程調(diào)用設(shè)置屬性的函數(shù)時,將設(shè)置屬性的函數(shù)調(diào)用到用戶級程序的進(jìn)程 中;
[0066]確定設(shè)置屬性的函數(shù)中系統(tǒng)屬性將要更新后的值與當(dāng)前系統(tǒng)屬性的值是否相同;
[0067] 若不同,則更新系統(tǒng)屬性的值,并通過用戶級程序的進(jìn)程將系統(tǒng)屬性及系統(tǒng)屬性 更新后的值寫入消息隊(duì)列中;
[0068] 通過屬性更新對象接收消息隊(duì)列發(fā)送的通知消息,并在接收到后向?qū)傩苑?wù)發(fā)送 通知消息。
[0069] 可選的,控制單元403還用于:
[0070] 當(dāng)任一進(jìn)程啟動運(yùn)行時,控制任一進(jìn)程向?qū)傩苑?wù)注冊任一進(jìn)程對應(yīng)的監(jiān)聽器以 及監(jiān)聽器監(jiān)聽的屬性列表;
[0071] 當(dāng)任一進(jìn)程停止運(yùn)行時,在屬性服務(wù)中注銷任一進(jìn)程對應(yīng)的監(jiān)聽器以及監(jiān)聽器監(jiān) 聽的屬性列表。
[0072] 本發(fā)明實(shí)施例提供一種通知系統(tǒng)屬性更新的裝置,在用戶級程序啟動時,創(chuàng)建一 通信單元,通信單元用于與屬性服務(wù)進(jìn)行進(jìn)程間通信,屬性服務(wù)用于接收進(jìn)程啟動后的注 冊消息,注冊消息包括進(jìn)程對應(yīng)的監(jiān)聽器和監(jiān)聽器監(jiān)聽的屬性列表;啟動屬性服務(wù),并循環(huán) 等待通過通信單元發(fā)送的通知消息,通知消息包括更新的系統(tǒng)屬性及系統(tǒng)屬性更新后的 值;當(dāng)獲知系統(tǒng)屬性更新時,通過通信單元向?qū)傩苑?wù)發(fā)送通知消息;遍歷注冊到屬性服務(wù) 中的每個監(jiān)聽器和每個監(jiān)聽器監(jiān)聽的屬性列表,確定監(jiān)聽系統(tǒng)屬性的監(jiān)聽器;將通知消息 通知給監(jiān)聽系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程。這樣,由于進(jìn)程設(shè)有對應(yīng)的監(jiān)聽器和監(jiān)聽器監(jiān) 聽的屬性列表,即進(jìn)程感興趣的屬性的列表,并注冊在屬性服務(wù)中,對于現(xiàn)有技術(shù)中系統(tǒng)屬 性更新通知不明確的問題,本申請可使得在某一系統(tǒng)屬性更新時,通過用戶級程序創(chuàng)建的 通信單元向?qū)傩苑?wù)中發(fā)送通知,以通知屬性服務(wù)更新的系統(tǒng)屬性以及更新后的值,而后 通過遍歷屬性服務(wù)中的監(jiān)聽器以及監(jiān)聽器監(jiān)聽的屬性列表確定監(jiān)聽該系統(tǒng)屬性的監(jiān)聽器, 以便將通知消息通知給該系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程,使得通知目標(biāo)明確,不需要像現(xiàn) 有技術(shù)中的進(jìn)程在獲知系統(tǒng)屬性變化時還需重新獲取一遍進(jìn)程所關(guān)注的系統(tǒng)屬性;對于現(xiàn) 有技術(shù)中如果通過串口或adb工具包更新系統(tǒng)屬性的值時由于受制于Binder進(jìn)程間通信, 無法進(jìn)行系統(tǒng)屬性更新的通知的問題,本申請中在系統(tǒng)屬性更新時,可調(diào)用到用戶級程序 中,通過用戶級程序與屬性服務(wù)進(jìn)行通信,進(jìn)而將更新的系統(tǒng)屬性通知給注冊到屬性服務(wù) 中對系統(tǒng)屬性感興趣的進(jìn)程,不再受制于跨進(jìn)程通信。因此,本發(fā)明可解決系統(tǒng)屬性的通知 機(jī)制通知的目標(biāo)不明確及無法通知的問題,進(jìn)而提升了系統(tǒng)開發(fā)和調(diào)試過程的執(zhí)行效率, 保證了系統(tǒng)的穩(wěn)定性和信息的實(shí)時性。
[0073] 在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的終端和方法,可以通過其 它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅 僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié) 合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的 相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通 信連接,可以是電性,機(jī)械或其它的形式。
[0074]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個 網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目 的。
[0075] 另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以 是各個單元單獨(dú)物理包括,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單 元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
[0076] 上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲在一個計算機(jī)可讀取存 儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī) 設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的部 分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,簡稱 ROM)、隨機(jī)存取存儲器(Random Access Memory,簡稱RAM)、磁碟或者光盤等各種可以存儲 程序代碼的介質(zhì)。
[0077]最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管 參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可 以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換; 而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和 范圍。
【主權(quán)項(xiàng)】
1. 一種通知系統(tǒng)屬性更新的方法,其特征在于,包括: 在用戶級程序啟動時,創(chuàng)建一通信單元,所述通信單元用于與屬性服務(wù)進(jìn)行進(jìn)程間通 信,所述屬性服務(wù)用于接收進(jìn)程啟動后的注冊消息,所述注冊消息包括所述進(jìn)程對應(yīng)的監(jiān) 聽器和所述監(jiān)聽器監(jiān)聽的屬性列表; 啟動所述屬性服務(wù),并循環(huán)等待通過所述通信單元發(fā)送的通知消息,所述通知消息包 括更新的系統(tǒng)屬性及所述系統(tǒng)屬性更新后的值; 當(dāng)獲知所述系統(tǒng)屬性更新時,調(diào)用所述用戶級程序的進(jìn)程,通過所述通信單元向所述 屬性服務(wù)發(fā)送所述通知消息; 遍歷注冊到所述屬性服務(wù)中的每個監(jiān)聽器和所述每個監(jiān)聽器監(jiān)聽的屬性列表,確定監(jiān) 聽所述系統(tǒng)屬性的監(jiān)聽器; 將所述通知消息通知給監(jiān)聽所述系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通信單元為消息隊(duì)列、共享內(nèi)存或管 道中的任一種。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)所述通信單元為所述消息隊(duì)列時,所述 啟動所述屬性服務(wù),并循環(huán)等待通過所述通信單元發(fā)送的通知消息包括: 啟動所述屬性服務(wù),通過JAVA本地調(diào)用JNI初始化本地層的屬性更新對象,以循環(huán)等待 所述系統(tǒng)屬性更新時通過所述消息隊(duì)列發(fā)送的所述通知消息。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述當(dāng)獲知所述系統(tǒng)屬性更新時,調(diào)用所 述用戶級程序的進(jìn)程,通過所述通信單元向所述屬性服務(wù)發(fā)送所述通知消息包括: 當(dāng)任一進(jìn)程調(diào)用設(shè)置屬性的函數(shù)時,將所述設(shè)置屬性的函數(shù)調(diào)用到所述用戶級程序的 進(jìn)程中; 確定所述設(shè)置屬性的函數(shù)中所述系統(tǒng)屬性將要更新后的值與當(dāng)前所述系統(tǒng)屬性的值 是否相同; 若不同,則更新所述系統(tǒng)屬性的值,并通過所述用戶級程序的進(jìn)程將所述系統(tǒng)屬性及 所述系統(tǒng)屬性更新后的值寫入所述消息隊(duì)列中; 通過所述屬性更新對象接收所述消息隊(duì)列發(fā)送的所述通知消息,并在接收到后向所述 屬性服務(wù)發(fā)送所述通知消息。5. 根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 當(dāng)任一進(jìn)程啟動運(yùn)行時,控制所述任一進(jìn)程向所述屬性服務(wù)注冊所述任一進(jìn)程對應(yīng)的 監(jiān)聽器以及所述監(jiān)聽器監(jiān)聽的屬性列表; 當(dāng)所述任一進(jìn)程停止運(yùn)行時,在所述屬性服務(wù)中注銷所述任一進(jìn)程對應(yīng)的監(jiān)聽器以及 所述監(jiān)聽器監(jiān)聽的屬性列表。6. -種通知系統(tǒng)屬性更新的裝置,其特征在于,包括: 啟動單元,用于啟動用戶級程序; 創(chuàng)建單元,用于創(chuàng)建一通信單元,所述通信單元用于與屬性服務(wù)進(jìn)行進(jìn)程間通信,所述 屬性服務(wù)用于接收進(jìn)程啟動后的注冊消息,所述注冊消息包括所述進(jìn)程對應(yīng)的監(jiān)聽器和所 述監(jiān)聽器監(jiān)聽的屬性列表; 所述啟動單元還用于,啟動所述屬性服務(wù),并循環(huán)等待所述通信單元發(fā)送的通知消息, 所述通知消息包括更新的系統(tǒng)屬性及所述系統(tǒng)屬性更新后的值; 控制單元,用于當(dāng)獲知所述系統(tǒng)屬性更新時,通過所述通信單元向所述屬性服務(wù)發(fā)送 所述通知消息; 遍歷單元,用于遍歷注冊到所述屬性服務(wù)中的每個監(jiān)聽器和所述每個監(jiān)聽器監(jiān)聽的屬 性列表; 確定單元,用于確定監(jiān)聽所述系統(tǒng)屬性的監(jiān)聽器; 通知單元,用于將所述通知消息通知給監(jiān)聽所述系統(tǒng)屬性的監(jiān)聽器對應(yīng)的進(jìn)程。7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述通信單元為消息隊(duì)列、共享內(nèi)存或管 道中的任一種。8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,當(dāng)所述通信單元為所述消息隊(duì)列時,所述 創(chuàng)建單元用于:通過JAVA本地調(diào)用JNI初始化本地層的屬性更新對象,以循環(huán)等待所述系統(tǒng) 屬性更新時通過所述消息隊(duì)列發(fā)送的所述通知消息。9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述控制單元用于: 當(dāng)任一進(jìn)程調(diào)用設(shè)置屬性的函數(shù)時,將所述設(shè)置屬性的函數(shù)調(diào)用到所述用戶級程序的 進(jìn)程中; 確定所述設(shè)置屬性的函數(shù)中所述系統(tǒng)屬性將要更新后的值與當(dāng)前所述系統(tǒng)屬性的值 是否相同; 若不同,則更新所述系統(tǒng)屬性的值,并通過所述用戶級程序的進(jìn)程將所述系統(tǒng)屬性及 所述系統(tǒng)屬性更新后的值寫入所述消息隊(duì)列中; 通過所述屬性更新對象接收所述消息隊(duì)列發(fā)送的所述通知消息,并在接收到后向所述 屬性服務(wù)發(fā)送所述通知消息。10. 根據(jù)權(quán)利要求6-9任一項(xiàng)所述的裝置,其特征在于,所述控制單元還用于: 當(dāng)任一進(jìn)程啟動運(yùn)行時,控制所述任一進(jìn)程向所述屬性服務(wù)注冊所述任一進(jìn)程對應(yīng)的 監(jiān)聽器以及所述監(jiān)聽器監(jiān)聽的屬性列表; 當(dāng)所述任一進(jìn)程停止運(yùn)行時,在所述屬性服務(wù)中注銷所述任一進(jìn)程對應(yīng)的監(jiān)聽器以及 所述監(jiān)聽器監(jiān)聽的屬性列表。
【文檔編號】G06F9/54GK106055348SQ201610340139
【公開日】2016年10月26日
【申請日】2016年5月19日
【發(fā)明人】李雙增
【申請人】青島海信電器股份有限公司