欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

目標(biāo)序列化實現(xiàn)方法和裝置與流程

文檔序號:11154317閱讀:368來源:國知局
目標(biāo)序列化實現(xiàn)方法和裝置與制造工藝

本發(fā)明涉及計算機(jī)應(yīng)用領(lǐng)域,特別是涉及一種目標(biāo)序列化實現(xiàn)方法和裝置。



背景技術(shù):

對象序列化技術(shù)是將對象數(shù)據(jù)轉(zhuǎn)換為另一種持久化數(shù)據(jù)形式的技術(shù),轉(zhuǎn)換之后的數(shù)據(jù)形式必須易于存儲在外部介質(zhì)上,或易于使用網(wǎng)絡(luò)進(jìn)行傳輸。為了使得存儲和傳輸后的數(shù)據(jù)能夠再次變回內(nèi)存中的對象,這樣的轉(zhuǎn)換必須是可逆的。目標(biāo)序列化技術(shù)在數(shù)據(jù)的傳輸和存儲過程中,引入了對象的抽象,使得這個過程更加直觀,使用更加方便,因此,目標(biāo)序列化技術(shù)在面向?qū)ο蟮能浖到y(tǒng)中使用非常廣泛。

由于目標(biāo)序列化技術(shù)使用的廣泛性,很多計算語言都在語言層面,通過標(biāo)準(zhǔn)庫的方式,提供目標(biāo)序列化的功能支持,如java語言等。在Android系統(tǒng)中,目標(biāo)序列化代碼讀寫都是手工完成的,例如每新增一個對象,在數(shù)據(jù)庫中通過需要手動寫一遍序列化代碼,然而大量函數(shù)和大量代碼重復(fù),通過手工復(fù)制粘貼,其開發(fā)效率低,且手工復(fù)制粘貼,容易引入缺陷。



技術(shù)實現(xiàn)要素:

基于此,有必要針對傳統(tǒng)的目標(biāo)序列化過程中手工復(fù)制粘貼代碼,導(dǎo)致開發(fā)效率低且容易引入缺陷的問題,提供一種目標(biāo)序列化實現(xiàn)方法,能夠提高開發(fā)效率且避免引入缺陷。

此外,提供一種目標(biāo)序列化實現(xiàn)裝置,能夠提高開發(fā)效率且避免引入缺陷。

一種目標(biāo)序列化實現(xiàn)方法,包括以下步驟:

自動獲取目標(biāo)中待序列化的部分;

對所述目標(biāo)中待序列化的部分進(jìn)行解析得到解析結(jié)果,并保存所述解析結(jié)果;

根據(jù)所述解析結(jié)果對所述目標(biāo)進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器;

調(diào)用所述打包序列化包裝器,通過反射機(jī)制對所述目標(biāo)進(jìn)行序列化讀寫。

一種目標(biāo)序列化實現(xiàn)裝置,包括:

獲取模塊,用于自動獲取目標(biāo)中待序列化的部分;

解析模塊,用于對所述目標(biāo)中待序列化的部分進(jìn)行解析得到解析結(jié)果,并保存所述解析結(jié)果;

轉(zhuǎn)換模塊,用于根據(jù)所述解析結(jié)果對所述目標(biāo)進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器;

調(diào)用模塊,用于調(diào)用所述打包序列化包裝器,通過反射機(jī)制對所述目標(biāo)進(jìn)行序列化讀寫。

上述目標(biāo)序列化實現(xiàn)方法和裝置,通過將自動獲取目標(biāo)中待序列化的部分,進(jìn)行解析得到解析結(jié)果,根據(jù)解析結(jié)果對目標(biāo)進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器,通過調(diào)用打包序列化包裝器及反射機(jī)制進(jìn)行序列化讀寫,不需要手動編碼,提高了開發(fā)效率,且不需手動復(fù)制粘貼,避免了引入缺陷,且轉(zhuǎn)換為打包序列化包裝器,減小了工程代碼量及函數(shù)量,縮減了空間。

附圖說明

圖1為一個實施例中終端的內(nèi)部結(jié)構(gòu)示意圖;

圖2為一個實施例中后臺服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖;

圖3為一個實施例中目標(biāo)序列化實現(xiàn)方法的流程圖;

圖4為一個實施例中類序列化實現(xiàn)方法的流程圖;

圖5為一個實施例中數(shù)據(jù)庫序列化實現(xiàn)方法的流程圖;

圖6為一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖;

圖7為另一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖;

圖8為另一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖;

圖9為另一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖;

圖10為另一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖。

具體實施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

可以理解,本發(fā)明所使用的術(shù)語“第一”、“第二”等可在本文中用于描述各種元件,但這些元件不受這些術(shù)語限制。這些術(shù)語僅用于將第一個元件與另一個元件區(qū)分。舉例來說,在不脫離本發(fā)明的范圍的情況下,可以將第一客戶端稱為第二客戶端,且類似地,可將第二客戶端稱為第一客戶端。第一客戶端和第二客戶端兩者都是客戶端,但其不是同一客戶端。

圖1為一個實施例中終端的內(nèi)部結(jié)構(gòu)示意圖。如圖1所示,該終端包括通過系統(tǒng)總線連接的處理器、存儲介質(zhì)、內(nèi)存、網(wǎng)絡(luò)接口、顯示屏、揚(yáng)聲器和輸入裝置。其中,終端的存儲介質(zhì)存儲有操作系統(tǒng),還包括一種目標(biāo)序列化實現(xiàn)裝置,該目標(biāo)序列化實現(xiàn)裝置用于實現(xiàn)一種目標(biāo)序列化實現(xiàn)方法。該處理器用于提供計算和控制能力,支撐整個終端的運(yùn)行。終端中的內(nèi)存為存儲介質(zhì)中的目標(biāo)序列化實現(xiàn)裝置的運(yùn)行提供環(huán)境,網(wǎng)絡(luò)接口用于與服務(wù)器進(jìn)行網(wǎng)絡(luò)通信,如發(fā)送數(shù)據(jù)請求至服務(wù)器,接收服務(wù)器返回的數(shù)據(jù)等。其中,目標(biāo)可包括類和/或數(shù)據(jù)庫等。類可為Java類中所有需要序列化的類。終端的顯示屏可以是液晶顯示屏或者電子墨水顯示屏等,輸入裝置可以是顯示屏上覆蓋的觸摸層,也可以是終端外殼上設(shè)置的按鍵、軌跡球或觸控板,也可以是外接的鍵盤、觸控板或鼠標(biāo)等。該終端可以是手機(jī)、平板電腦或者個人數(shù)字助理。本領(lǐng)域技術(shù)人員可以理解,圖1中示出的結(jié)構(gòu),僅僅是與本申請方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對本申請方案所應(yīng)用于其上的終端的限定,具體的終端可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。

圖2為一個實施例中后臺服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖。如圖2所示,該后臺服務(wù)器包括通過系統(tǒng)總線連接的處理器、存儲介質(zhì)、內(nèi)存和網(wǎng)絡(luò)接口。其中,該服務(wù)器的存儲介質(zhì)存儲有操作系統(tǒng)、數(shù)據(jù)庫和目標(biāo)序列化實現(xiàn)裝置,數(shù)據(jù)庫中存儲有目標(biāo)序列化數(shù)據(jù),該目標(biāo)序列化實現(xiàn)裝置用于實現(xiàn)適用于服務(wù)器的一種 目標(biāo)序列化實現(xiàn)方法。該服務(wù)器的處理器用于提供計算和控制能力,支撐整個服務(wù)器的運(yùn)行。該服務(wù)器的內(nèi)存為存儲介質(zhì)中的目標(biāo)序列化實現(xiàn)裝置的運(yùn)行提供環(huán)境。該服務(wù)器的網(wǎng)絡(luò)接口用于據(jù)以與外部的終端通過網(wǎng)絡(luò)連接通信,比如接收終端發(fā)送的數(shù)據(jù)請求以及向終端返回數(shù)據(jù)等。服務(wù)器可以用獨立的服務(wù)器或者是多個服務(wù)器組成的服務(wù)器集群來實現(xiàn)。本領(lǐng)域技術(shù)人員可以理解,圖2中示出的結(jié)構(gòu),僅僅是與本申請方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對本申請方案所應(yīng)用于其上的服務(wù)器的限定,具體的服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。

圖3為一個實施例中目標(biāo)序列化實現(xiàn)方法的流程圖。如圖3所示,一種目標(biāo)序列化實現(xiàn)方法,包括以下步驟:

步驟302,自動獲取目標(biāo)中待序列化的部分。

具體地,獲取目標(biāo)中待序列化的部分可通過字符串匹配方式獲取或添加注解標(biāo)記,查詢到注解標(biāo)記獲取,但不限于此。

在一個實施例中,步驟302包括:從目標(biāo)中查找與預(yù)定字符串相匹配的成員,將相匹配的成員作為待序列化的部分。

具體地,預(yù)定字符串可根據(jù)需要設(shè)定,如%#,&%,*&等,不限于此。

若目標(biāo)包括類,則從類中查找與第一預(yù)定字符串相匹配的成員,將相匹配的成員作為類中待序列化的部分。

其中,第一預(yù)定字符串可根據(jù)需要設(shè)定,如%#,&%,*&等,不限于此。

若目標(biāo)包括數(shù)據(jù)庫,則從數(shù)據(jù)庫中查找與第二預(yù)定字符串相匹配的成員,將相匹配的成員作為類中待序列化的部分。

其中,第二預(yù)定字符串可根據(jù)需要設(shè)定,如%#,&%,*&等,不限于此。且第一預(yù)定字符串與第二預(yù)定字符串不同。通過字符串匹配可快速查找到需要序列化的部分,不需要額外增加標(biāo)記。

步驟304,對目標(biāo)中待序列化的部分進(jìn)行解析得到解析結(jié)果,并保存該解析結(jié)果。

具體地,目標(biāo)可包括類和數(shù)據(jù)庫等中一種或兩種。若目標(biāo)包括類,則解析 結(jié)果中包括類信息,主要是類成員的類型信息等。若目標(biāo)包括數(shù)據(jù)庫,則解析結(jié)果中包括數(shù)據(jù)庫中數(shù)據(jù)表信息等。將解析結(jié)果保存在內(nèi)存緩存中,供后續(xù)調(diào)用使用。

步驟306,根據(jù)該解析結(jié)果對該目標(biāo)進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器。

具體地,將目標(biāo)轉(zhuǎn)換為ParcelWrapper類,即打包序列化包裝器,對自動序列化的部分的包裝。轉(zhuǎn)換支持的基本類型包括String(字符串類型)、SmartParcel(自動序列化類型)、Parcelable類(Android系統(tǒng)類型)、ArrayList(數(shù)組列表類型)、Map(數(shù)據(jù)結(jié)構(gòu))等。

步驟308,調(diào)用該打包序列化包裝器,通過反射機(jī)制對該目標(biāo)進(jìn)行序列化讀寫。

具體地,調(diào)用ParcelWrapper,根據(jù)解析結(jié)果通過反射機(jī)制對目標(biāo)進(jìn)行序列化讀寫。反射機(jī)制是Java系統(tǒng)提供的能力。反射機(jī)制是指Java在運(yùn)行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法,對于任意一個對象,都能夠調(diào)用它的任意一個方法和屬性,這種動態(tài)獲取的信息以及動態(tài)調(diào)用對象的方法的功能稱為Java語言的反射機(jī)制。

Java反射機(jī)制主要提供了以下功能:在運(yùn)行時判斷任意一個對象所屬的類;在運(yùn)行時構(gòu)造任意一個類的對象;在運(yùn)行時判斷任意一個類所具有的成員變量和方法;在運(yùn)行時調(diào)用任意一個對象的方法;生成動態(tài)代理。

上述目標(biāo)序列化實現(xiàn)方法,通過將自動獲取目標(biāo)中待序列化的部分,進(jìn)行解析得到解析結(jié)果,根據(jù)解析結(jié)果對目標(biāo)進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器,通過調(diào)用打包序列化包裝器及反射機(jī)制進(jìn)行序列化讀寫,不需要手動編碼,提高了開發(fā)效率,且不需手動復(fù)制粘貼,避免了引入缺陷,且轉(zhuǎn)換為打包序列化包裝器,減小了工程代碼量及函數(shù)量,縮減了空間。

在一個實施例中,上述目標(biāo)序列化實現(xiàn)方法還包括:對該目標(biāo)中待序列化的成員添加注解標(biāo)記。注解標(biāo)記可為預(yù)先定義的標(biāo)記,用于表示目標(biāo)中需要序列化的成員。目標(biāo)有多個時,每個目標(biāo)所采用的注解標(biāo)記不同,每個目標(biāo)與其注解標(biāo)記對應(yīng)。

該自動獲取目標(biāo)中待序列化的部分包括:獲取該目標(biāo)中記錄有注解標(biāo)記的 部分作為該目標(biāo)中待序列化的部分。通過添加注解標(biāo)記,方便快速查找到對應(yīng)的待序列化的部分,且不需重復(fù)編寫代碼和函數(shù),減小了數(shù)據(jù)量。

圖4為一個實施例中類序列化實現(xiàn)方法的流程圖。如圖4所示,目標(biāo)為類,一種類序列化實現(xiàn)方法,包括以下步驟:

步驟402,對類中待序列化的成員添加第一注解標(biāo)記。

具體地,第一注解標(biāo)記根據(jù)需要設(shè)定,如@NeedParcel或@n或#m等,不限于此。

例如,類中添加注解標(biāo)記后的代碼如下所示:

上述在類的成員中添加第一注解標(biāo)記@NeedParcel,表明需要序列化。

步驟404,獲取該類中記錄有第一注解標(biāo)記的部分作為類中待序列化的部分。

具體地,識別出具有第一注解標(biāo)記的部分作為類中待序列化的部分。

步驟406,對類中待序列化的部分進(jìn)行解析得到解析結(jié)果,并保存該解析結(jié)果。

具體地,解析結(jié)果中包括類信息,主要是類成員的類型信息等。

步驟408,根據(jù)該解析結(jié)果對類進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器。

具體地,將類轉(zhuǎn)換為ParcelWrapper類,即打包序列化包裝器,對自動序列化的部分的包裝。轉(zhuǎn)換支持的基本類型包括String(字符串類型)、SmartParcel(自動序列化類型)、Parcelable類(Android系統(tǒng)類型)、ArrayList(數(shù)組列表類型)、Map(數(shù)據(jù)結(jié)構(gòu))等。

SmartParcelable接口為被序列化類的接口,不需要實現(xiàn)任何函數(shù),通過 SmartParcelable接口可以獲取類中實現(xiàn)序列化的成員。

步驟410,調(diào)用該打包序列化包裝器,通過反射機(jī)制對該類進(jìn)行序列化讀寫。

具體地,調(diào)用ParcelWrapper,根據(jù)解析結(jié)果通過反射機(jī)制對目標(biāo)進(jìn)行序列化讀寫。

上述類序列化實現(xiàn)方法,通過將類中待序列化的成員添加第一注解標(biāo)記,根據(jù)第一注解標(biāo)記獲取到類中待序列化的部分,進(jìn)行解析得到解析結(jié)果,根據(jù)解析結(jié)果對類進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器,通過調(diào)用打包序列化包裝器及反射機(jī)制進(jìn)行序列化讀寫,不需要手動編碼,提高了開發(fā)效率,且不需手動復(fù)制粘貼,避免了引入缺陷,且轉(zhuǎn)換為打包序列化包裝器,減小了工程代碼量及函數(shù)量,縮減了空間。

圖5為一個實施例中數(shù)據(jù)庫序列化實現(xiàn)方法的流程圖。如圖5所示,目標(biāo)為數(shù)據(jù)庫,一種數(shù)據(jù)庫序列化實現(xiàn)方法,包括以下步驟:

步驟502,對數(shù)據(jù)庫中待序列化的成員添加第二注解標(biāo)記。

具體地,第二注解標(biāo)記根據(jù)需要設(shè)定,如@DbValue或@t或#p等,不限于此。目標(biāo)有多個時,每個目標(biāo)所采用的注解標(biāo)記不同。

例如,在原有的DbcacheData接口,需要手動實現(xiàn)以下四個函數(shù):

*Interface that must be implemented and provided as a public CREATOR

*field that provides some static access of your cache data.

@Public

public static interface DbCreator<T extends DbCacheable>{

@public

public Structure[]structure();

@public

public String[]sortorder();

@public

public T createFromCursor(Cursor cursor);

@public

public int version();

}

添加第二注解標(biāo)注@DbValue后代碼如下:

Class that help Auto write or read the Dbdata;

Version control of this data,define a static int field named VERSION_INT,like;

Private static final int VERSION_INT=8;//數(shù)據(jù)庫版本號

Sort order of this data,define a static String filed named ORDER_STR,like;

Simple example:

Public class AppInfo extends AutoDbData{

Private static final int VERSION_INT=8;//數(shù)據(jù)庫版本號

//@DbValue(true)means this Colum should be UNIQUE

//default is false;

@DbValue(true)

public int appid;

@DbValue(true)

public String appname;

@DbValue(true)

public String iconUrl;

@DbValue(true)

public String downloadUrl;

@DbValue(true)

public String summary;

@DbValue(true)

public int isRecommend;

@DbValue(true)

public String packageName;

@DbValue(true)

public String h5_url;//觸屏應(yīng)用地址

@DbValue(true)

public String recommendComment;//推薦詳情

@DbValue(true)

public int maskAppType;

//本地

Public int appType=AppType.OTHER_APPLICATION;

Public long installTime=0;

Public int cancelable=0;

Public AppInfo(){

}

此外,還可對注解標(biāo)記設(shè)置為true,表示在數(shù)據(jù)表中唯一。

步驟504,獲取該數(shù)據(jù)庫中記錄有第二注解標(biāo)記的部分作為類中待序列化的部分。

具體地,識別出具有第二注解標(biāo)記的部分作為類中待序列化的部分。

步驟506,對數(shù)據(jù)庫中待序列化的部分進(jìn)行解析得到解析結(jié)果,并保存該解析結(jié)果。

具體地,解析結(jié)果中包括數(shù)據(jù)庫中數(shù)據(jù)表信息等。

步驟508,根據(jù)該解析結(jié)果對數(shù)據(jù)庫進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器。

具體地,將數(shù)據(jù)庫轉(zhuǎn)換為ParcelWrapper類,即打包序列化包裝器,對自動序列化的部分的包裝。轉(zhuǎn)換支持的基本類型包括String(字符串類型)、SmartParcel(自動序列化類型)、Parcelable類(Android系統(tǒng)類型)、ArrayList(數(shù)組列表類型)、Map(數(shù)據(jù)結(jié)構(gòu))等。

SmartParcelable接口為被序列化類的接口,不需要實現(xiàn)任何函數(shù),通過SmartParcelable接口可以獲取類中實現(xiàn)序列化的成員。

步驟510,調(diào)用該打包序列化包裝器,通過反射機(jī)制對該數(shù)據(jù)庫進(jìn)行序列化讀寫。

具體地,調(diào)用ParcelWrapper,根據(jù)解析結(jié)果通過反射機(jī)制對數(shù)據(jù)庫進(jìn)行序列化讀寫。

上述數(shù)據(jù)庫序列化實現(xiàn)方法,通過將數(shù)據(jù)庫中待序列化的成員添加第二注解標(biāo)記,根據(jù)第二注解標(biāo)記獲取到數(shù)據(jù)庫中待序列化的部分,進(jìn)行解析得到解析結(jié)果,根據(jù)解析結(jié)果對數(shù)據(jù)庫進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器,通過調(diào)用打包序列化包裝器及反射機(jī)制進(jìn)行序列化讀寫,不需要手動編碼,提高了開發(fā)效率,且不需手動復(fù)制粘貼,避免了引入缺陷,且轉(zhuǎn)換為打包序列化包裝器,減小了工程代碼量及函數(shù)量,縮減了空間。

在一個實施例中,上述數(shù)據(jù)庫序列化實現(xiàn)方法中,還包括:在數(shù)據(jù)庫中存儲有數(shù)據(jù)表版本號,并設(shè)置該數(shù)據(jù)表版本號的靜態(tài)值。

具體地,數(shù)據(jù)表版本號寫static final int VERSION_INT=8;設(shè)置數(shù)據(jù)包版本號的靜態(tài)值,每次版本號更新時,版本號自動增加1。

進(jìn)一步的,上述數(shù)據(jù)庫序列化實現(xiàn)方法中,還包括:對該數(shù)據(jù)表進(jìn)行排序,并設(shè)置排序方式的靜態(tài)值。

具體地,通過寫“static final String ORDER_STR=Columns.FEED_PRIORITY+"DESC,"+Columns.PUBLISH_DATE+"DESC";”的靜態(tài)值,設(shè)置排序方式,按照排序方式進(jìn)行排序。通過設(shè)置靜態(tài)值,不需要生成函數(shù),可以通過反射讀取到信息。數(shù)據(jù)庫中數(shù)據(jù)表根據(jù)需要自動進(jìn)行排序。

在其他實施例中,上述目標(biāo)序列化實現(xiàn)方法可同時對類和數(shù)據(jù)庫進(jìn)行序列化,若采用注解標(biāo)記,則類中成員所添加的第一注解標(biāo)記和數(shù)據(jù)庫中成員所添加的第二注解標(biāo)記不同,以區(qū)分。

上述目標(biāo)序列化實現(xiàn)方法應(yīng)用于在即時通信應(yīng)用程序空間中可以減少大約200多個類,減少900多個函數(shù)。開發(fā)中也無需再手動寫序列化類,提高開發(fā)效率。運(yùn)行效率:自動化執(zhí)行耗時分為兩步,類解析(解析出哪些字段需要讀寫,字段類型等)與數(shù)據(jù)讀寫,類解析耗時較多,對解析的結(jié)果做緩存,只有第一次用到時解析一遍。一般數(shù)據(jù)類總的讀寫耗時2ms左右。此外,對讀寫密度較大,或者次數(shù)較多的類,也支持使用手動寫入,提高執(zhí)行效率。類中的中間對象可使用對象池,減少零碎對象出現(xiàn)。

圖6為一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖。如圖6所示,一種目標(biāo)序列化實現(xiàn)裝置,包括獲取模塊610、解析模塊620、轉(zhuǎn)換模塊630和調(diào)用 模塊640。其中:

獲取模塊610用于自動獲取目標(biāo)中待序列化的部分。

具體地,獲取模塊610獲取目標(biāo)中待序列化的部分可通過字符串匹配方式獲取或添加注解標(biāo)記,查詢到注解標(biāo)記獲取。

在一個實施例中,獲取模塊610還用于從該目標(biāo)中查找與預(yù)定字符串相匹配的成員,將該相匹配的成員作為待序列化的部分。

具體地,預(yù)定字符串可根據(jù)需要設(shè)定,如%#,&%,*&等,不限于此。

若目標(biāo)包括類,則獲取模塊610從類中查找與第一預(yù)定字符串相匹配的成員,將相匹配的成員作為類中待序列化的部分。

其中,第一預(yù)定字符串可根據(jù)需要設(shè)定,如%#,&%,*&等,不限于此。

若目標(biāo)包括數(shù)據(jù)庫,則獲取模塊610從數(shù)據(jù)庫中查找與第二預(yù)定字符串相匹配的成員,將相匹配的成員作為類中待序列化的部分。

其中,第二預(yù)定字符串可根據(jù)需要設(shè)定,如%#,&%,*&等,不限于此。且第一預(yù)定字符串與第二預(yù)定字符串不同。通過字符串匹配可快速查找到需要序列化的部分,不需要額外增加標(biāo)記。

解析模塊620用于對所述目標(biāo)中待序列化的部分進(jìn)行解析得到解析結(jié)果,并保存所述解析結(jié)果。

具體地,目標(biāo)可包括類和數(shù)據(jù)庫等中一種或兩種。若目標(biāo)包括類,則解析結(jié)果中包括類信息,主要是類成員的類型信息等。若目標(biāo)包括數(shù)據(jù)庫,則解析結(jié)果中包括數(shù)據(jù)庫中數(shù)據(jù)表信息等。將解析結(jié)果保存在內(nèi)存緩存中,供后續(xù)調(diào)用使用。

轉(zhuǎn)換模塊630用于根據(jù)該解析結(jié)果對所述類進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器。

具體地,將目標(biāo)轉(zhuǎn)換為ParcelWrapper類,即打包序列化包裝器,對自動序列化的部分的包裝。轉(zhuǎn)換支持的基本類型包括String(字符串類型)、SmartParcel(自動序列化類型)、Parcelable類(Android系統(tǒng)類型)、ArrayList(數(shù)組列表類型)、Map(數(shù)據(jù)結(jié)構(gòu))等。

調(diào)用模塊640用于調(diào)用所述打包序列化包裝器,通過反射機(jī)制對所述類進(jìn) 行序列化讀寫。

具體地,調(diào)用ParcelWrapper,根據(jù)解析結(jié)果通過反射機(jī)制對目標(biāo)進(jìn)行序列化讀寫。反射機(jī)制是Java系統(tǒng)提供的能力。

上述目標(biāo)序列化實現(xiàn)裝置,通過將自動獲取目標(biāo)中待序列化的部分,進(jìn)行解析得到解析結(jié)果,根據(jù)解析結(jié)果對目標(biāo)進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器,通過調(diào)用打包序列化包裝器及反射機(jī)制進(jìn)行序列化讀寫,不需要手動編碼,提高了開發(fā)效率,且不需手動復(fù)制粘貼,避免了引入缺陷,且轉(zhuǎn)換為打包序列化包裝器,減小了工程代碼量及函數(shù)量,縮減了空間。

圖7為另一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖。如圖7所示,一種目標(biāo)序列化實現(xiàn)裝置,除了包括獲取模塊610、解析模塊620、轉(zhuǎn)換模塊630和調(diào)用模塊640,還包括標(biāo)注模塊650。其中:

標(biāo)注模塊650用于對該目標(biāo)中待序列化的成員添加注解標(biāo)記。

注解標(biāo)記可為預(yù)先定義的標(biāo)記,用于表示目標(biāo)中需要序列化的成員。目標(biāo)有多個時,每個目標(biāo)所采用的注解標(biāo)記不同,每個目標(biāo)與其注解標(biāo)記對應(yīng)。

獲取模塊610還用于獲取該目標(biāo)中記錄有注解標(biāo)記的部分作為該目標(biāo)中待序列化的部分。通過添加注解標(biāo)記,方便快速查找到對應(yīng)的待序列化的部分,且不需重復(fù)編寫代碼和函數(shù),減小了數(shù)據(jù)量。

圖8為另一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖。如圖8所示,目標(biāo)包括類,一種目標(biāo)序列化實現(xiàn)裝置,除了包括獲取模塊610、解析模塊620、轉(zhuǎn)換模塊630和調(diào)用模塊640,還包括第一標(biāo)記模塊660。其中:

第一標(biāo)記模塊660用于對該類中待序列化的成員添加第一注解標(biāo)記。

具體地,第一注解標(biāo)記根據(jù)需要設(shè)定,如@NeedParcel或@n或#m等,不限于此。

獲取模塊610還用于獲取該類中記錄有第一注解標(biāo)記的部分作為該類中待序列化的部分。

解析模塊620還用于對類中待序列化的部分進(jìn)行解析得到解析結(jié)果,并保 存該解析結(jié)果。具體地,解析結(jié)果中包括類信息,主要是類成員的類型信息等。

轉(zhuǎn)換模塊630還用于根據(jù)該解析結(jié)果對類進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器。SmartParcelable接口為被序列化類的接口,不需要實現(xiàn)任何函數(shù),通過SmartParcelable接口可以獲取類中實現(xiàn)序列化的成員。

調(diào)用模塊640還用于調(diào)用該打包序列化包裝器,通過反射機(jī)制對該類進(jìn)行序列化讀寫。

具體地,調(diào)用ParcelWrapper,根據(jù)解析結(jié)果通過反射機(jī)制對目標(biāo)進(jìn)行序列化讀寫。

上述類序列化實現(xiàn)裝置,通過將類中待序列化的成員添加第一注解標(biāo)記,根據(jù)第一注解標(biāo)記獲取到類中待序列化的部分,進(jìn)行解析得到解析結(jié)果,根據(jù)解析結(jié)果對類進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器,通過調(diào)用打包序列化包裝器及反射機(jī)制進(jìn)行序列化讀寫,不需要手動編碼,提高了開發(fā)效率,且不需手動復(fù)制粘貼,避免了引入缺陷,且轉(zhuǎn)換為打包序列化包裝器,減小了工程代碼量及函數(shù)量,縮減了空間。

圖9為另一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖。如圖9所示,目標(biāo)包括數(shù)據(jù)庫,一種目標(biāo)序列化實現(xiàn)裝置,除了包括獲取模塊610、解析模塊620、轉(zhuǎn)換模塊630和調(diào)用模塊640,還包括第二標(biāo)記模塊670。其中:

第二標(biāo)記模塊670用于對數(shù)據(jù)庫成員添加第二注解標(biāo)記。

具體地,第二注解標(biāo)記根據(jù)需要設(shè)定,如@DbValue或@t或#p等,不限于此。目標(biāo)有多個時,每個目標(biāo)所采用的注解標(biāo)記不同。

獲取模塊610還用于獲取該數(shù)據(jù)庫中記錄有第二注解標(biāo)記的部分作為數(shù)據(jù)庫中待序列化的部分。

解析模塊620還用于對數(shù)據(jù)庫中待序列化的部分進(jìn)行解析得到解析結(jié)果,并保存該解析結(jié)果。具體地,解析結(jié)果中包括數(shù)據(jù)庫中數(shù)據(jù)表信息等。

轉(zhuǎn)換模塊630還用于根據(jù)該解析結(jié)果對數(shù)據(jù)庫進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器。

調(diào)用模塊640還用于調(diào)用該打包序列化包裝器,通過反射機(jī)制對該數(shù)據(jù)庫 進(jìn)行序列化讀寫。

具體地,調(diào)用ParcelWrapper,根據(jù)解析結(jié)果通過反射機(jī)制對數(shù)據(jù)庫進(jìn)行序列化讀寫。

上述數(shù)據(jù)庫序列化實現(xiàn)裝置,通過將數(shù)據(jù)庫中待序列化的成員添加第二注解標(biāo)記,根據(jù)第二注解標(biāo)記獲取到數(shù)據(jù)庫中待序列化的部分,進(jìn)行解析得到解析結(jié)果,根據(jù)解析結(jié)果對數(shù)據(jù)庫進(jìn)行序列化,轉(zhuǎn)換為打包序列化包裝器,通過調(diào)用打包序列化包裝器及反射機(jī)制進(jìn)行序列化讀寫,不需要手動編碼,提高了開發(fā)效率,且不需手動復(fù)制粘貼,避免了引入缺陷,且轉(zhuǎn)換為打包序列化包裝器,減小了工程代碼量及函數(shù)量,縮減了空間。

圖10為另一個實施例中目標(biāo)序列化實現(xiàn)裝置的結(jié)構(gòu)框圖。如圖10所示,目標(biāo)包括數(shù)據(jù)庫,一種目標(biāo)序列化實現(xiàn)裝置,除了包括獲取模塊610、解析模塊620、轉(zhuǎn)換模塊630、調(diào)用模塊640、第二標(biāo)記模塊670、還包括存儲模塊680和排序模塊690。

存儲模塊680用于在所述數(shù)據(jù)庫中存儲有數(shù)據(jù)表版本號,并設(shè)置該數(shù)據(jù)表版本號的靜態(tài)值。

具體地,數(shù)據(jù)表版本號寫static final int VERSION_INT=8;設(shè)置數(shù)據(jù)包版本號的靜態(tài)值,每次版本號更新時,版本號自動增加1。

排序模塊690用于對該數(shù)據(jù)表進(jìn)行排序,并設(shè)置排序方式的靜態(tài)值。

通過設(shè)置靜態(tài)值,不需要生成函數(shù),可以通過反射讀取到信息。

在其他實施例中,上述目標(biāo)序列化實現(xiàn)裝置,可包括獲取模塊610、解析模塊620、轉(zhuǎn)換模塊630、調(diào)用模塊640、第一標(biāo)記模塊660、第二標(biāo)記模塊670、存儲模塊680和排序模塊690中任意可能的組合,在此不再贅述。

本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一非易失性計算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)等。

以上所述實施例僅表達(dá)了本發(fā)明的幾種實施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宜丰县| 斗六市| 罗江县| 筠连县| 和田县| 自贡市| 连州市| 天水市| 大同市| 吉木乃县| 涿鹿县| 达孜县| 孝义市| 瑞金市| 武威市| 周口市| 罗源县| 潜山县| 东平县| 绥棱县| 古田县| 钟山县| 临沂市| 万安县| 乡城县| 娄烦县| 沈阳市| 乐昌市| 望江县| 汤原县| 威远县| 和政县| 临高县| 东乌珠穆沁旗| 同仁县| 瑞安市| 日照市| 基隆市| 莱芜市| 贵阳市| 安塞县|