亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種短信息的還原方法和裝置與流程

文檔序號(hào):11918043閱讀:286來源:國知局
一種短信息的還原方法和裝置與流程

本發(fā)明涉及通信的技術(shù)領(lǐng)域,特別是涉及一種短信息的還原方法和一種短信息的還原裝置。



背景技術(shù):

隨著通信科技的發(fā)展,諸如手機(jī)、手表等移動(dòng)終端在人們的工作、學(xué)習(xí)、日常交流等各方面的使用率也越來越高。

用戶經(jīng)常使用短信、彩信等短信息與他人進(jìn)行通信,長期積累,使得移動(dòng)終端內(nèi)累積了數(shù)量眾多的短信息,尤其對(duì)于商務(wù)人士而言,累積的短信息的數(shù)量可能多達(dá)數(shù)萬條,并存儲(chǔ)在短信息數(shù)據(jù)庫中。

為了避免在系統(tǒng)崩潰、更換移動(dòng)終端等情況下導(dǎo)致短信息丟失,用戶通常會(huì)對(duì)短信息進(jìn)行備份,在適當(dāng)?shù)臅r(shí)候進(jìn)行還原。

目前,在還原短信息時(shí),通常一次性將備份文件全部讀入內(nèi)存,再寫入短信息數(shù)據(jù)庫中。

當(dāng)備份文件中的短信息的數(shù)量過多時(shí),會(huì)大量占用內(nèi)存,甚至?xí)霈F(xiàn)超出內(nèi)存(OOM,Out Of Memory),造成運(yùn)行異常。



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

鑒于上述問題,為了解決上述短信息還原時(shí)占用內(nèi)存過大的問題,本發(fā)明實(shí)施例提出了一種短信息的還原方法和相應(yīng)的一種短信息的還原裝置。

依據(jù)本發(fā)明的一個(gè)方面,提供了一種短信息的還原方法,包括:

在移動(dòng)終端中獲取待還原的短信息備份文件;

將所述短信息備份文件中的短信息至少分兩次寫入內(nèi)存,并至少分兩次從所述內(nèi)存中寫入短信息數(shù)據(jù)庫。

可選地,所述將所述短信息備份文件中的短信息至少分兩次寫入內(nèi)存,并至少分兩次從所述內(nèi)存中寫入短信息數(shù)據(jù)庫的步驟包括:

從所述短信息備份文件中讀取部分短信息;

將所述部分短信息存儲(chǔ)至內(nèi)存;

將存儲(chǔ)在內(nèi)存的所述部分短信息寫入短信息數(shù)據(jù)庫中;

判斷是否將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫;

若是,則結(jié)束將存儲(chǔ)在內(nèi)存的短信息寫入短信息數(shù)據(jù)庫中;

若否,則返回執(zhí)行所述從所述短信息備份文件中讀取部分短信息的步驟。

可選地,所述從所述短信息備份文件中讀取部分短信息的步驟包括:

讀取位置變量的值,獲得句柄位置;

從所述句柄位置開始,從所述短信息備份文件中讀取一段備份數(shù)據(jù);

在所述備份數(shù)據(jù)中識(shí)別短信息的結(jié)束標(biāo)識(shí)符;

以所述結(jié)束標(biāo)識(shí)符為節(jié)點(diǎn),將所述備份數(shù)據(jù)劃分為數(shù)據(jù)片段,作為短信息;

將所述備份數(shù)據(jù)的句柄位置寫入所述位置變量。

可選地,所述從所述短信息備份文件中讀取部分短信息的步驟還包括:

從數(shù)據(jù)變量中提取上一次劃分短信息時(shí)剩余的數(shù)據(jù)片段;

將上一次剩余的數(shù)據(jù)片段拼接在本次第一條數(shù)據(jù)片段之前,獲得完整的數(shù)據(jù)片段;

和/或,

當(dāng)本次最后一條數(shù)據(jù)片段不具有結(jié)束標(biāo)識(shí)符時(shí),將本次最后一條數(shù)據(jù)片段存儲(chǔ)至數(shù)據(jù)變量中。

可選地,所述從所述短信息備份文件中讀取部分短信息的步驟還包括:

記錄所述備份數(shù)據(jù)的長度;

當(dāng)所述長度為零時(shí),結(jié)束從所述短信息備份文件中讀取部分短信息。

可選地,所述將所述部分短信息存儲(chǔ)至內(nèi)存的步驟包括:

在內(nèi)存中設(shè)置一數(shù)組;

將所述部分短信息寫入所述數(shù)組中。

可選地,所述將存儲(chǔ)在內(nèi)存的所述部分短信息寫入短信息數(shù)據(jù)庫中的步驟包括:

配置初始變量、終結(jié)變量,所述初始變量的值為所述數(shù)組中第一條短信息在所有短信息中的排序,所述終結(jié)變量的值為位于所述數(shù)組中最后一條短信息下一條的短信息在所有短信息中的排序;

將所述初始變量的值賦予還原變量;

判斷所述還原變量的值是否大于或等于所述終結(jié)變量的值;

若是,則結(jié)束將存儲(chǔ)在內(nèi)存的所述部分短信息寫入短信息數(shù)據(jù)庫中;

若否,則將所述數(shù)組中位于所述還原變量的短信息寫入短信息數(shù)據(jù)庫中;

將所述還原變量的值加一,返回執(zhí)行所述判斷所述還原變量的值是否大于或等于所述終結(jié)變量的值的步驟。

可選地,所述判斷是否將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫的步驟包括:

判斷所述還原變量的值是否大于或等于所述短信息備份文件中短信息的總數(shù)量;

若是,則確定將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫;

若否,則確定未將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫。

根據(jù)本發(fā)明的另一方面,提供了一種短信息的還原裝置,其特征在于,包括:

短信息備份文件獲取模塊,用于在移動(dòng)終端中獲取待還原的短信息備份文件;

多次存儲(chǔ)模塊,用于將所述短信息備份文件中的短信息至少分兩次寫入內(nèi)存,并至少分兩次從所述內(nèi)存中寫入短信息數(shù)據(jù)庫。

可選地,所述多次存儲(chǔ)模塊包括:

部分短信息讀取子模塊,用于從所述短信息備份文件中讀取部分短信息;

內(nèi)存存儲(chǔ)子模塊,用于將所述部分短信息存儲(chǔ)至內(nèi)存;

短信息數(shù)據(jù)庫寫入子模塊,用于將存儲(chǔ)在內(nèi)存的所述部分短信息寫入短信息數(shù)據(jù)庫中;

短信息存儲(chǔ)完成子模塊,用于判斷是否將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫;若是,則調(diào)用存儲(chǔ)結(jié)束子模塊,若否,則返回調(diào)用所述部分短信息讀取子模塊;

調(diào)用存儲(chǔ)結(jié)束子模塊,用于結(jié)束將存儲(chǔ)在內(nèi)存的短信息寫入短信息數(shù)據(jù)庫中。

可選地,所述部分短信息讀取子模塊包括:

句柄位置讀取單元,用于讀取位置變量的值,獲得句柄位置;

備份數(shù)據(jù)讀取單元,用于從所述句柄位置開始,從所述短信息備份文件中讀取一段備份數(shù)據(jù);

結(jié)束標(biāo)識(shí)符識(shí)別單元,用于在所述備份數(shù)據(jù)中識(shí)別短信息的結(jié)束標(biāo)識(shí)符;

數(shù)據(jù)片段劃分單元,用于以所述結(jié)束標(biāo)識(shí)符為節(jié)點(diǎn),將所述備份數(shù)據(jù)劃分為數(shù)據(jù)片段,作為短信息;

句柄位置更新單元,用于將所述備份數(shù)據(jù)的句柄位置寫入所述位置變量。

可選地,所述部分短信息讀取子模塊還包括:

剩余數(shù)據(jù)片段提取單元,用于從數(shù)據(jù)變量中提取上一次劃分短信息時(shí)剩余的數(shù)據(jù)片段;

數(shù)據(jù)片段拼接單元,用于將上一次剩余的數(shù)據(jù)片段拼接在本次第一條數(shù)據(jù)片段之前,獲得完整的數(shù)據(jù)片段;

和/或,

剩余數(shù)據(jù)片段存儲(chǔ)單元,用于在本次最后一條數(shù)據(jù)片段不具有結(jié)束標(biāo)識(shí)符時(shí),將本次最后一條數(shù)據(jù)片段存儲(chǔ)至數(shù)據(jù)變量中。

可選地,所述部分短信息讀取子模塊還包括:

長度記錄單元,用于記錄所述備份數(shù)據(jù)的長度;

結(jié)束讀短信息備份單元,用于在所述長度為零時(shí),結(jié)束從所述短信息備份文件中讀取部分短信息。

可選地,所述內(nèi)存存儲(chǔ)子模塊包括:

數(shù)組設(shè)置單元,用于在內(nèi)存中設(shè)置一數(shù)組;

數(shù)組寫入單元,用于將所述部分短信息寫入所述數(shù)組中。

可選地,所述短信息數(shù)據(jù)庫寫入子模塊包括:

變量值配置單元,用于配置初始變量、終結(jié)變量所述初始變量的值為所述數(shù)組中第一條短信息在所有短信息中的排序,所述終結(jié)變量的值為位于所述數(shù)組中最后一條短信息下一條的短信息在所有短信息中的排序;

賦值模塊,用于將所述初始變量的值賦予還原變量;

終結(jié)變量判斷單元,用于判斷所述還原變量的值是否大于或等于所述終結(jié)變量的值;若是,則調(diào)用結(jié)束寫短信息數(shù)據(jù)庫單元,若否,則調(diào)用短信息讀取單元;

結(jié)束寫短信息數(shù)據(jù)庫單元,用于結(jié)束將存儲(chǔ)在內(nèi)存的所述部分短信息寫入短信息數(shù)據(jù)庫中;

短信息還原單元,用于將所述數(shù)組中位于所述還原變量的短信息寫入短信息數(shù)據(jù)庫中;

還原變量值變更單元,用于將所述還原變量的值加一,返回調(diào)用所述遍歷結(jié)束判斷子模塊。

可選地,所述存儲(chǔ)完成判斷子模塊包括:

短信息總數(shù)量判斷單元,用于判斷所述還原變量的值是否大于或等于所述短信息備份文件中短信息的總數(shù)量;若是,則調(diào)用第一確認(rèn)單元,若否,則調(diào)用第二確認(rèn)單元;

第一確認(rèn)單元,用于確定將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫;

第二確認(rèn)單元,用于確定未將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫。

本發(fā)明實(shí)施例包括以下優(yōu)點(diǎn):

本發(fā)明實(shí)施例將還原操作看作是對(duì)于要進(jìn)行還原操作的短信息備份文件,一部分一部分地寫入短信息數(shù)據(jù)庫,每一部分的數(shù)據(jù)是相對(duì)獨(dú)立的,因此,可以基于懶加載機(jī)制,將短信息備份文件通過至少分兩次寫入內(nèi)存,并至少分兩次從內(nèi)存寫入短信息數(shù)據(jù)庫,由于每兩次將短信息備份文件寫入到內(nèi)存并從內(nèi)存寫入短信息數(shù)據(jù)庫之間間隔的時(shí)間一般很短暫,保證了整體還原操作的正常執(zhí)行,在短信息備份文件的數(shù)據(jù)量較大的情況下,每次寫入一部分?jǐn)?shù)據(jù)到內(nèi)存中、再將該部分?jǐn)?shù)據(jù)寫入數(shù)據(jù)庫,復(fù)用一塊內(nèi)存,可以減少每次寫入內(nèi)存的數(shù)據(jù)量,減少內(nèi)存的占用量,保證在內(nèi)存的可承受范圍內(nèi),避免出現(xiàn)超出內(nèi)存的情況,保證運(yùn)行正常。

附圖說明

圖1是本發(fā)明的一種短信息的還原方法實(shí)施例的步驟流程圖;

圖2是本發(fā)明的另一種短信息的還原方法實(shí)施例的步驟流程圖;

圖3是本發(fā)明實(shí)施例的一種從短信息備份文件中讀取部分短信息的示例流程圖;

圖4是本發(fā)明實(shí)施例的一種將內(nèi)存的部分短信息寫入短信息數(shù)據(jù)庫中的示例流程圖;

圖5是本發(fā)明實(shí)施例的另一種將內(nèi)存的部分短信息寫入短信息數(shù)據(jù)庫中的示例流程圖;

圖6是本發(fā)明實(shí)施例的一種moveToNext()函數(shù)的示例流程圖;

圖7是本發(fā)明的一種短信息的還原方法裝置實(shí)施例的結(jié)構(gòu)框圖。

具體實(shí)施方式

為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。

參照?qǐng)D1,示出了本發(fā)明的一種短信息的還原方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:

步驟101,在移動(dòng)終端中獲取待還原的短信息備份文件。

步驟102,將所述短信息備份文件中的短信息至少分兩次寫入內(nèi)存,并至少分兩次從所述內(nèi)存中寫入短信息數(shù)據(jù)庫。

在具體實(shí)現(xiàn)中,本發(fā)明實(shí)施例可以應(yīng)用可以通過蜂窩網(wǎng)絡(luò)等方式進(jìn)行通信的移動(dòng)終端中,例如,手機(jī)、平板電腦、個(gè)人數(shù)字助理、穿戴設(shè)備(如眼鏡、手表等)等等。

這些移動(dòng)終端的操作系統(tǒng)可以包括Android(安卓)、IOS、Windows Phone、Windows等等。

為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實(shí)施例,在本說明書中,將Android作為操作系統(tǒng)的一種示例進(jìn)行說明。

用戶使用移動(dòng)終端進(jìn)行通信,通常會(huì)產(chǎn)生數(shù)量不等的短信息,例如,短信(sms)、彩信(mms)等等。

這些短信息,一般會(huì)存儲(chǔ)在操作系統(tǒng)的短信息數(shù)據(jù)庫中,短信息界面上顯示的短信息的內(nèi)容可以通過查詢此短信息數(shù)據(jù)庫文件得到的,供用戶進(jìn)行瀏覽、刪除、修改等操作。

在Android系統(tǒng)中,短信息數(shù)據(jù)庫為mmssms.db,其存儲(chǔ)目錄一般為data/data/com.android.mms/databases/。

在mmssms.db中,一般具有threads表(存放會(huì)話數(shù)據(jù)的表)、sms表(存放短信的表)、pdu表/part表(存放彩信的表)、Canonical_address表(存放phone number的表)等等。

在本發(fā)明實(shí)施例中,可以預(yù)先將短信息數(shù)據(jù)庫中存儲(chǔ)的短信息進(jìn)行備份,生成短信息備份文件,存儲(chǔ)在本地存儲(chǔ)或者云端。

在短信息數(shù)據(jù)庫發(fā)生異常或者用戶手動(dòng)進(jìn)行還原等情況下,可以從本地存儲(chǔ)查找該短信息備份文件,或者,從云端下載短信息備份文件。

本發(fā)明實(shí)施例將還原操作看作是對(duì)于要進(jìn)行還原操作的短信息備份文件,一部分一部分地寫入短信息數(shù)據(jù)庫,每一部分的數(shù)據(jù)是相對(duì)獨(dú)立的,因此,可以基于懶加載機(jī)制,將短信息備份文件通過至少分兩次寫入內(nèi)存,并至少分兩次從內(nèi)存寫入短信息數(shù)據(jù)庫,由于每兩次將短信息備份文件寫入到內(nèi)存并從內(nèi)存寫入短信息數(shù)據(jù)庫之間間隔的時(shí)間一般很短暫,保證了整體還原操作的正常執(zhí)行,在短信息備份文件的數(shù)據(jù)量較大的情況下,每次寫入一部分?jǐn)?shù)據(jù)到內(nèi)存中、再將該部分?jǐn)?shù)據(jù)寫入數(shù)據(jù)庫,復(fù)用一塊內(nèi)存,可以減少每次寫入內(nèi)存的數(shù)據(jù)量,減少內(nèi)存的占用量,保證在內(nèi)存的可承受范圍內(nèi),避免出現(xiàn)超出內(nèi)存的情況,保證運(yùn)行正常。

參照?qǐng)D2,示出了本發(fā)明的另一種短信息的還原方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:

步驟201,在移動(dòng)終端中獲取待還原的短信息備份文件。

步驟202,從所述短信息備份文件中讀取部分短信息。

在具體實(shí)現(xiàn)中,每次從短信息備份文件中讀取部分短信息寫入內(nèi)存中,由于短信息的數(shù)據(jù)量大小并非恒定的,因此,短信息備份文件中讀取的短信息的數(shù)量也并非恒定的。

在本發(fā)明的一個(gè)實(shí)施例中,如圖3所示,步驟202可以包括如下子步驟:

子步驟S11,讀取位置變量的值,獲得句柄位置;

子步驟S12,從所述句柄位置開始,從所述短信息備份文件中讀取一段備份數(shù)據(jù);

子步驟S13,在所述備份數(shù)據(jù)中識(shí)別短信息的結(jié)束標(biāo)識(shí)符;

子步驟S14,以所述結(jié)束標(biāo)識(shí)符為節(jié)點(diǎn),將所述備份數(shù)據(jù)劃分為數(shù)據(jù)片段,作為短信息;

子步驟S15,將所述備份數(shù)據(jù)的句柄位置寫入所述位置變量。

在本發(fā)明實(shí)施例中,定義了五個(gè)變量和一個(gè)常量,用于記錄還原過程中的節(jié)點(diǎn)和數(shù)據(jù),五個(gè)變量分別為:

1、MessageArray

數(shù)組,表示內(nèi)存中暫時(shí)存儲(chǔ)短信數(shù)據(jù)。

2、mPosition

還原變量,表示短信息備份文件中第mPosition條短信息。

3、mStartPosition

初始變量,表示著MessageArray中的第一條短信息,是短信息備份文件中第mStartPosition條短信息。

4、mValidPosition

終結(jié)變量,表示著MessageArray中位于最后一條短信的下一條短信息,是短信息備份文件中第mValidPosition條短信。

5、mFilePosition

位置變量,表示當(dāng)前讀取的短信息備份文件的句柄位置。

此外,一個(gè)常量為N(N為正整數(shù)),表示著MessageArray中短信息的數(shù)量為N,共N條短信可以同時(shí)讀取到數(shù)據(jù)庫中。

為了邏輯更加清晰,本發(fā)明實(shí)施例可以將這五個(gè)變量和一個(gè)常量都封裝到一個(gè)類中,如ShortMessageCursor,作為其成員變量。

應(yīng)用本發(fā)明實(shí)施例,可以從讀取mFilePosition,把短信息備份文件的句柄位置移至上次讀取結(jié)束時(shí)的位置,以便通過mReader對(duì)象讀取短信息備份文件中后面未還原的短信息。

在實(shí)際應(yīng)用中,可以按照從句柄位置開始,從短信息備份文件中讀取一段備份數(shù)據(jù)。

記錄備份數(shù)據(jù)的長度(字節(jié)數(shù)),如記錄在length中,該長度可以有本領(lǐng)域技術(shù)人員進(jìn)行設(shè)置,使得備份數(shù)據(jù)中包含的短信息的數(shù)量N在一個(gè)可接受的范圍內(nèi)。

當(dāng)所述長度為零時(shí),表示短信息備份文件讀取完畢,結(jié)束從短信息備份文件中讀取部分短信息。

在短信息備份文件中,短信息是通過結(jié)束標(biāo)識(shí)符(如END:VMSG)表示其數(shù)據(jù)結(jié)束位置,在讀取的備份數(shù)據(jù)中識(shí)別結(jié)束標(biāo)識(shí)符并劃分出數(shù)據(jù)片段,一個(gè)完整(沒有結(jié)束標(biāo)識(shí)符)的數(shù)據(jù)片段為一條短信息,共N條短信息。

需要說明的是,由于短信息的數(shù)據(jù)量并非恒定的,因此,在讀取備份數(shù)據(jù)時(shí),有可能將一條短信息劃分成了兩段數(shù)據(jù)片段,每段數(shù)據(jù)片段不完整。

因此,如果上一次劃分短信息時(shí)有剩余的不完整的數(shù)據(jù)片段存儲(chǔ)在數(shù)據(jù)變量中,則可以從數(shù)據(jù)變量中提取上一次劃分短信息時(shí)剩余的數(shù)據(jù)片段,將上一次剩余的數(shù)據(jù)片段拼接在本次第一條數(shù)據(jù)片段之前,獲得完整的數(shù)據(jù)片段。

此外,當(dāng)本次最后一條數(shù)據(jù)片段不具有結(jié)束標(biāo)識(shí)符時(shí),將本次最后一條數(shù)據(jù)片段存儲(chǔ)至數(shù)據(jù)變量中,待下一次劃分短信息時(shí)補(bǔ)全。

步驟203,將所述部分短信息存儲(chǔ)至內(nèi)存。

如果成功從短信息備份文件中讀取部分短信息,則可以存儲(chǔ)至內(nèi)存中,以待寫入短信息數(shù)據(jù)庫。

在本發(fā)明實(shí)施例中,可以在內(nèi)存中設(shè)置一數(shù)組,將部分短信息寫入該數(shù)組(MessageArray)中。

需要說明的是,由于短信息備份文件中讀取的短信息的數(shù)量并非恒定的,因此,該數(shù)組的數(shù)量可以根據(jù)短信息的數(shù)量動(dòng)態(tài)地進(jìn)行設(shè)置。

步驟204,將存儲(chǔ)在內(nèi)存的所述部分短信息寫入短信息數(shù)據(jù)庫中。

在具體實(shí)現(xiàn)中,可以遍歷內(nèi)存中存儲(chǔ)的短信息,并將其寫入短信息數(shù)據(jù)庫中。

如圖4所述,在子步驟S21中,可以利用操作系統(tǒng)提供的File(文件)對(duì)象,獲取一個(gè)ShortMessageCursor對(duì)象cursor(游標(biāo)),在子步驟S22中,調(diào)用moveToNext()函數(shù),從指向第一條記錄之前向后移動(dòng)一個(gè)位置變?yōu)閯偤弥赶虻谝粭l記錄位置,如果返回Ture(真),則在子步驟S23中,調(diào)用getValue()函數(shù),提取該cursor上的值,即短信息,之后,在子步驟S24中,把獲取的短信息寫入短信息數(shù)據(jù)庫,如果返回False(假),則在子步驟S25中,退出操作。

在本發(fā)明的一個(gè)實(shí)施例中,如圖5所示,步驟204可以包括如下子步驟:

子步驟S31,配置初始變量、終結(jié)變量;

子步驟S32,將所述初始變量的值賦予還原變量;

子步驟S33,判斷所述還原變量的值是否大于或等于所述終結(jié)變量的值;若是,則執(zhí)行子步驟S34,若否,則執(zhí)行子步驟S35;

子步驟S34,結(jié)束將存儲(chǔ)在內(nèi)存的所述部分短信息寫入短信息數(shù)據(jù)庫中;

子步驟S35,將所述數(shù)組中位于所述還原變量的短信息寫入短信息數(shù)據(jù)庫中;

子步驟S36,將所述還原變量的值加一,返回執(zhí)行子步驟S33。

在本發(fā)明實(shí)施例中,初始變量mStartPosition的值為數(shù)組中第一條短信息在所有短信息中的排序,即一或者上一次終結(jié)變量的值。

終結(jié)變量mValidPosition的值為位于所述數(shù)組中最后一條短信息下一條的短信息在所有短信息中的排序,即在初始變量mStartPosition的值的基礎(chǔ)上偏移部分短信息的量。

還原變量mPosition為當(dāng)前還原的短信息在在所有短信息中的排序,其值初始賦值為初始變量mStartPosition的值。

在具體實(shí)現(xiàn)中,初始化時(shí),初始變量mStartPosition=1,終結(jié)變量mValidPosition=mStartPosition+N,還原變量mPosition=mStartPosition,其中,N為數(shù)組MessageArray中短信息的數(shù)量。

如圖6所示,在調(diào)用moveToNext()函數(shù)遍歷MessageArray時(shí),在子步驟S41中判斷是否滿足mPosition>mCount、mPosition<mStartPosition,若是,則表示可能發(fā)生錯(cuò)誤,在子步驟S42中返回錯(cuò)誤(return false)的信息,若否,則表示運(yùn)行正常。

其中,mCount為短信息備份文件中短信息的總數(shù)量。

在子步驟S43中,判斷是否mPosition≥mValidPosition。

如果mPosition≥mValidPosition,則表示MessageArray的短信息讀取完畢,在子步驟S44中,調(diào)用fillUpShortMessage(ture)函數(shù),在子步驟S45中返回正確(return true)的信息,停止本次遍歷MessageArray的操作。

如果mPosition<mValidPosition,則表示MessageArray的短信息未讀取完畢,在子步驟S45中返回正確(return true)的信息,即可讀取第mPosition條短信,寫入到短信息數(shù)據(jù)庫中。

將mPosition的值加一,mPosition=mPosition+1,返回判斷是否mPosition≥mValidPosition。

在下一次遍歷MessageArray的操作中,初始變量的值為上一次遍歷MessageArray的操作中終結(jié)變量的值,即mStartPosition=mValidPosition,在此基礎(chǔ)上設(shè)置其他變量的值,終結(jié)變量mValidPosition=mStartPosition+N,還原變量mPosition=mStartPosition,繼續(xù)遍歷MessageArray。

步驟205,判斷是否將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫;若是,則執(zhí)行步驟206,若否,則返回執(zhí)行步驟202。

步驟206,結(jié)束將存儲(chǔ)在內(nèi)存的短信息寫入短信息數(shù)據(jù)庫中。

在本發(fā)明實(shí)施例中,可以判斷還原變量mPosition的值是否大于或等于短信息備份文件中短信息的總數(shù)量mCount。

若是,則確定將短信息備份文件中的短信息全部寫入短信息數(shù)據(jù)庫,結(jié)束還原操作。

若否,則確定未將短信息備份文件中的短信息全部寫入短信息數(shù)據(jù)庫,繼續(xù)執(zhí)行還原操作。

需要說明的是,對(duì)于方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本發(fā)明實(shí)施例所必須的。

參照?qǐng)D7,示出了本發(fā)明的一種短信息的還原裝置實(shí)施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:

短信息備份文件獲取模塊701,用于在移動(dòng)終端中獲取待還原的短信息備份文件;

多次存儲(chǔ)模塊702,用于將所述短信息備份文件中的短信息至少分兩次寫入內(nèi)存,并至少分兩次從所述內(nèi)存中寫入短信息數(shù)據(jù)庫。

在本發(fā)明的一個(gè)實(shí)施例中,所述多次存儲(chǔ)模塊702包括:

部分短信息讀取子模塊,用于從所述短信息備份文件中讀取部分短信息;

內(nèi)存存儲(chǔ)子模塊,用于將所述部分短信息存儲(chǔ)至內(nèi)存;

短信息數(shù)據(jù)庫寫入子模塊,用于將存儲(chǔ)在內(nèi)存的所述部分短信息寫入短信息數(shù)據(jù)庫中;

存儲(chǔ)完成判斷子模塊,用于判斷是否將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫;若是,則調(diào)用存儲(chǔ)結(jié)束子模塊,若否,則返回調(diào)用所述部分短信息讀取子模塊;

調(diào)用存儲(chǔ)結(jié)束子模塊,用于結(jié)束將存儲(chǔ)在內(nèi)存的短信息寫入短信息數(shù)據(jù)庫中。

在本發(fā)明的一個(gè)實(shí)施例中,所述部分短信息讀取子模塊包括:

句柄位置讀取單元,用于讀取位置變量的值,獲得句柄位置;

備份數(shù)據(jù)讀取單元,用于從所述句柄位置開始,從所述短信息備份文件中讀取一段備份數(shù)據(jù);

結(jié)束標(biāo)識(shí)符識(shí)別單元,用于在所述備份數(shù)據(jù)中識(shí)別短信息的結(jié)束標(biāo)識(shí)符;

數(shù)據(jù)片段劃分單元,用于以所述結(jié)束標(biāo)識(shí)符為節(jié)點(diǎn),將所述備份數(shù)據(jù)劃分為數(shù)據(jù)片段,作為短信息;

句柄位置更新單元,用于將所述備份數(shù)據(jù)的句柄位置寫入所述位置變量。

在本發(fā)明的一個(gè)實(shí)施例中,所述部分短信息讀取子模塊還包括:

剩余數(shù)據(jù)片段提取單元,用于從數(shù)據(jù)變量中提取上一次劃分短信息時(shí)剩余的數(shù)據(jù)片段;

數(shù)據(jù)片段拼接單元,用于將上一次剩余的數(shù)據(jù)片段拼接在本次第一條數(shù)據(jù)片段之前,獲得完整的數(shù)據(jù)片段;

和/或,

剩余數(shù)據(jù)片段存儲(chǔ)單元,用于在本次最后一條數(shù)據(jù)片段不具有結(jié)束標(biāo)識(shí)符時(shí),將本次最后一條數(shù)據(jù)片段存儲(chǔ)至數(shù)據(jù)變量中。

在本發(fā)明的一個(gè)實(shí)施例中,所述部分短信息讀取子模塊還包括:

長度記錄單元,用于記錄所述備份數(shù)據(jù)的長度;

結(jié)束讀短信息備份單元,用于在所述長度為零時(shí),結(jié)束從所述短信息備份文件中讀取部分短信息。

在本發(fā)明的一個(gè)實(shí)施例中,所述內(nèi)存存儲(chǔ)子模塊包括:

數(shù)組設(shè)置單元,用于在內(nèi)存中設(shè)置一數(shù)組;

數(shù)組寫入單元,用于將所述部分短信息寫入所述數(shù)組中。

在本發(fā)明的一個(gè)實(shí)施例中,所述短信息數(shù)據(jù)庫寫入子模塊包括:

變量值配置單元,用于配置初始變量、終結(jié)變量所述初始變量的值為所述數(shù)組中第一條短信息在所有短信息中的排序,所述終結(jié)變量的值為位于所述數(shù)組中最后一條短信息下一條的短信息在所有短信息中的排序;

賦值模塊,用于將所述初始變量的值賦予還原變量;

終結(jié)變量判斷單元,用于判斷所述還原變量的值是否大于或等于所述終結(jié)變量的值;若是,則調(diào)用結(jié)束寫短信息數(shù)據(jù)庫單元,若否,則調(diào)用短信息讀取單元;

結(jié)束寫短信息數(shù)據(jù)庫單元,用于結(jié)束將存儲(chǔ)在內(nèi)存的所述部分短信息寫入短信息數(shù)據(jù)庫中;

短信息還原單元,用于將所述數(shù)組中位于所述還原變量的短信息寫入短信息數(shù)據(jù)庫中;

還原變量值變更單元,用于將所述還原變量的值加一,返回調(diào)用所述遍歷結(jié)束判斷子模塊。

在本發(fā)明的一個(gè)實(shí)施例中,所述存儲(chǔ)完成判斷子模塊包括:

短信息總數(shù)量判斷單元,用于判斷所述還原變量的值是否大于或等于所述短信息備份文件中短信息的總數(shù)量;若是,則調(diào)用第一確認(rèn)單元,若否,則調(diào)用第二確認(rèn)單元;

第一確認(rèn)單元,用于確定將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫;

第二確認(rèn)單元,用于確定未將所述短信息備份文件中的短信息全部寫入所述短信息數(shù)據(jù)庫。

對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。

本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明實(shí)施例的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。

本發(fā)明實(shí)施例是參照根據(jù)本發(fā)明實(shí)施例的方法、終端設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。

這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。

這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。

盡管已描述了本發(fā)明實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明實(shí)施例范圍的所有變更和修改。

最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。

以上對(duì)本發(fā)明所提供的一種短信息的還原方法和一種短信息的還原裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1