一種信息數(shù)據(jù)庫的異常處理方法和裝置的制造方法
【專利摘要】本發(fā)明實施例提供了一種信息數(shù)據(jù)庫的異常處理方法和裝置,該方法包括:在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備份,獲得備份數(shù)據(jù)庫;當檢測所述信息數(shù)據(jù)庫異常時,刪除所述信息數(shù)據(jù)庫;將所述備份數(shù)據(jù)庫恢復為新的信息數(shù)據(jù)庫。由于常用的備份機制可以保證備份數(shù)據(jù)庫中保存有損壞的信息數(shù)據(jù)庫時的大部分通信信息、甚至全部通信信息,因此,以此備份數(shù)據(jù)庫進行恢復,可以大大減少用戶的通信信息的丟失,提高了信息數(shù)據(jù)庫的實用性。
【專利說明】
一種信息數(shù)據(jù)庫的異常處理方法和裝置
技術領域
[0001] 本發(fā)明涉及移動設備的技術領域,特別是涉及一種信息數(shù)據(jù)庫的異常處理方法和 一種信息數(shù)據(jù)庫的異常處理裝置。
【背景技術】
[0002] 隨著通信科技的發(fā)展,諸如手機、手表等移動通信終端在人們的工作、學習、日常 交流等各方面的使用率也越來越高。
[0003] 在移動通信終端的使用過程中,短信、彩信等與他人進行通信的通信信息的使用 頻率較大,使得信息數(shù)據(jù)庫中累計的通信信息的數(shù)量也較多。
[0004] 移動通信終端在運行過程中,由于系統(tǒng)異常偶爾會出現(xiàn)掉電重啟或死機等異常情 況,此時信息數(shù)據(jù)庫可能出現(xiàn)突然損壞的情況,導致用戶的所有通信信息都會丟失。
【發(fā)明內容】
[0005] 鑒于上述問題,為了解決上述信息數(shù)據(jù)庫在異常情況下?lián)p壞的問題,本發(fā)明實施 例提出了一種信息數(shù)據(jù)庫的異常處理方法和相應的一種信息數(shù)據(jù)庫的異常處理裝置。
[0006] 為了解決上述問題,本發(fā)明實施例公開了一種信息數(shù)據(jù)庫的異常處理方法,包括:
[0007] 在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備份,獲得備份數(shù)據(jù)庫;
[0008] 當檢測所述信息數(shù)據(jù)庫異常時,刪除所述信息數(shù)據(jù)庫;
[0009] 將所述備份數(shù)據(jù)庫恢復為新的信息數(shù)據(jù)庫。
[0010] 優(yōu)選地,所述當檢測所述信息數(shù)據(jù)庫異常時,刪除所述信息數(shù)據(jù)庫的步驟包括:
[0011] 接收在加載所述信息數(shù)據(jù)庫時上報的異常信息;
[0012] 調用指定的刪除接口刪除所述信息數(shù)據(jù)庫;
[0013] 發(fā)送異常廣播。
[0014] 優(yōu)選地,所述將所述備份數(shù)據(jù)庫恢復為新的信息數(shù)據(jù)庫的步驟包括:
[0015] 當監(jiān)聽到異常廣播時,將所述備份數(shù)據(jù)庫復制至所述信息數(shù)據(jù)庫的存儲目錄中, 作為新的信息數(shù)據(jù)庫;
[0016] 重啟所述信息數(shù)據(jù)庫所屬的進程;
[0017] 加載所述新的信息數(shù)據(jù)庫。
[0018] 優(yōu)選地,所述當檢測所述信息數(shù)據(jù)庫異常時,刪除所述信息數(shù)據(jù)庫的步驟包括:
[0019] 接收在加載所述信息數(shù)據(jù)庫時上報的異常信息;
[0020] 復制所述信息數(shù)據(jù)庫,獲得異常數(shù)據(jù)庫;
[0021] 調用指定的刪除接口刪除所述信息數(shù)據(jù)庫。
[0022] 優(yōu)選地,所述將所述備份數(shù)據(jù)庫恢復為新的信息數(shù)據(jù)庫的步驟包括:
[0023] 當移動通信終端重啟時,檢測是否存在異常數(shù)據(jù)庫;
[0024] 當存在異常數(shù)據(jù)庫時,檢測所述信息數(shù)據(jù)庫的最新恢復時間是否小于所述異常數(shù) 據(jù)庫的創(chuàng)建時間;
[0025] 若是,則將所述備份數(shù)據(jù)庫復制至所述信息數(shù)據(jù)庫的存儲目錄中,作為新的信息 數(shù)據(jù)庫;
[0026] 重啟所述信息數(shù)據(jù)庫所屬的進程;
[0027]加載所述新的信息數(shù)據(jù)庫。
[0028] 優(yōu)選地,所述在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備份,獲得備 份數(shù)據(jù)庫的步驟包括:
[0029] 在移動通信終端中查詢所述信息數(shù)據(jù)庫的上一次的備份時間;
[0030] 計算所述上一次的備份時間與當前時間之間的時間差值;
[0031] 當所述時間差值大于或等于預設的時間閾值時,復制存儲通信信息的信息數(shù)據(jù) 庫,獲得備份數(shù)據(jù)庫。
[0032]本發(fā)明實施例還公開了一種信息數(shù)據(jù)庫的異常處理裝置,包括:
[0033]信息數(shù)據(jù)庫備份模塊,用于在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行 備份,獲得備份數(shù)據(jù)庫;
[0034]信息數(shù)據(jù)庫刪除模塊,用于在檢測所述信息數(shù)據(jù)庫異常時,刪除所述信息數(shù)據(jù)庫;
[0035] 備份數(shù)據(jù)庫恢復模塊,用于將所述備份數(shù)據(jù)庫恢復為新的信息數(shù)據(jù)庫。
[0036] 優(yōu)選地,所述信息數(shù)據(jù)庫刪除模塊包括:
[0037]第一異常信息接收子模塊,用于接收在加載所述信息數(shù)據(jù)庫時上報的異常信息;
[0038] 第一刪除接口調用子模塊,用于調用指定的刪除接口刪除所述信息數(shù)據(jù)庫;
[0039] 異常廣播發(fā)送子模塊,用于發(fā)送異常廣播。
[0040] 優(yōu)選地,所述備份數(shù)據(jù)庫恢復模塊包括:
[0041] 第一備份數(shù)據(jù)庫復制子模塊,用于在監(jiān)聽到異常廣播時,將所述備份數(shù)據(jù)庫復制 至所述信息數(shù)據(jù)庫的存儲目錄中,作為新的信息數(shù)據(jù)庫;
[0042]第一進程重啟子模塊,用于重啟所述信息數(shù)據(jù)庫所屬的進程;
[0043] 第一信息數(shù)據(jù)庫加載子模塊,用于加載所述新的信息數(shù)據(jù)庫。
[0044] 優(yōu)選地,所述信息數(shù)據(jù)庫刪除模塊包括:
[0045] 第二異常信息接收子模塊,用于接收在加載所述信息數(shù)據(jù)庫時上報的異常信息; [0046]信息數(shù)據(jù)復制子模塊,用于復制所述信息數(shù)據(jù)庫,獲得異常數(shù)據(jù)庫;
[0047] 第二刪除接口調用子模塊,用于調用指定的刪除接口刪除所述信息數(shù)據(jù)庫。
[0048] 優(yōu)選地,所述備份數(shù)據(jù)庫恢復模塊包括:
[0049] 異常數(shù)據(jù)庫檢測子模塊,用于在移動通信終端重啟時,檢測是否存在異常數(shù)據(jù)庫;
[0050] 時間檢測子模塊,用于在存在異常數(shù)據(jù)庫時,檢測所述信息數(shù)據(jù)庫的最新恢復時 間是否小于所述異常數(shù)據(jù)庫的創(chuàng)建時間;若是,則調用第二備份數(shù)據(jù)庫復制子模塊;
[0051] 第二備份數(shù)據(jù)庫復制子模塊,用于將所述備份數(shù)據(jù)庫復制至所述信息數(shù)據(jù)庫的存 儲目錄中,作為新的信息數(shù)據(jù)庫;
[0052]第二進程重啟子模塊,用于重啟所述信息數(shù)據(jù)庫所屬的進程;
[0053]第二信息數(shù)據(jù)庫加載子模塊,用于加載所述新的信息數(shù)據(jù)庫。
[0054] 優(yōu)選地,所述信息數(shù)據(jù)庫備份模塊包括:
[0055] 備份時間查詢子模塊,用于在移動通信終端中查詢所述信息數(shù)據(jù)庫的上一次的備 份時間;
[0056] 時間差值計算子模塊,用于計算所述上一次的備份時間與當前時間之間的時間差 值;
[0057] 備份數(shù)據(jù)庫獲得子模塊,用于在所述時間差值大于或等于預設的時間閾值時,復 制存儲通信信息的信息數(shù)據(jù)庫,獲得備份數(shù)據(jù)庫。
[0058]本發(fā)明實施例包括以下優(yōu)點:
[0059] 本發(fā)明實施例在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備份,移動通 信終端在運行過程中,由于系統(tǒng)異常偶爾會出現(xiàn)掉電重啟或死機等異常情況,此時信息數(shù) 據(jù)庫可能出現(xiàn)突然損壞的情況,則刪除該信息數(shù)據(jù)庫,并將備份的備份數(shù)據(jù)庫恢復為新的 信息數(shù)據(jù)庫,由于常用的備份機制可以保證備份數(shù)據(jù)庫中保存有損壞的信息數(shù)據(jù)庫時的大 部分通信信息、甚至全部通信信息,因此,以此備份數(shù)據(jù)庫進行恢復,可以大大減少用戶的 通信信息的丟失,提高了信息數(shù)據(jù)庫的實用性。
【附圖說明】
[0060] 圖1是本發(fā)明的一種信息數(shù)據(jù)庫的異常處理方法實施例1的步驟流程圖;
[0061] 圖2是本發(fā)明實施例的一種定時備份的流程示例圖;
[0062]圖3是本發(fā)明實施例的一種在Android系統(tǒng)中信息數(shù)據(jù)庫的異常處理機制的示意 圖;
[0063] 圖4是本發(fā)明的一種信息數(shù)據(jù)庫的異常處理方法實施例2的步驟流程圖;
[0064] 圖5是本發(fā)明的一種信息數(shù)據(jù)庫的異常處理方法實施例3的步驟流程圖;
[0065] 圖6是本發(fā)明的一種信息數(shù)據(jù)庫的異常處理裝置實施例的結構框圖。
【具體實施方式】
[0066] 為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和具體實 施方式對本發(fā)明作進一步詳細的說明。
[0067] 參照圖1,示出了本發(fā)明的一種信息數(shù)據(jù)庫的異常處理方法實施例1的步驟流程 圖,具體可以包括如下步驟:
[0068] 步驟101,在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備份,獲得備份數(shù) 據(jù)庫;
[0069] 在具體實現(xiàn)中,本發(fā)明實施例可以應用可以通過蜂窩網絡等方式進行通信的移動 通信終端中,例如,手機、平板電腦、個人數(shù)字助理、穿戴設備(如眼鏡、手表等)等等。
[0070] 這些移動通信終端的操作系統(tǒng)可以包括Android(安卓)、I0S、Windows Phone、 Windows 等等。
[0071]為使本領域技術人員更好地理解本發(fā)明實施例,在本說明書中,將Android作為操 作系統(tǒng)的一種示例進行說明。
[0072]移動通信終端之間進行通信,通常會產生數(shù)量不等的通信信息,例如,短信(sms)、 彩信(mms)等等。
[0073]這些通信信息,一般會存儲在系統(tǒng)的信息數(shù)據(jù)庫中,應用界面上顯示的通信信息 的內容可以通過查詢此信息數(shù)據(jù)庫文件得到的,供用戶進行瀏覽、刪除、修改等操作。
[0074]其中,在信息數(shù)據(jù)庫中存儲的一般是彩信相關的關鍵信息,比如,附件類型、路徑 等,彩信的附件一般不存儲在信息數(shù)據(jù)庫中。
[0075] 以Android系統(tǒng)為例,信息數(shù)據(jù)庫可以為mmssms.db,其存儲目錄一般為data/ data/com?android?mms/databases/〇
[0076] mmssms.db中一般具有以下幾張表:
[0077] l、threads表(存放會話數(shù)據(jù)的表);
[0078] threads表的示例如下:
[0079]
[0080] 其中,_id:用于區(qū)分不同的電話號碼,系統(tǒng)會為不同的電話號碼分配不同的」d; [0081 ] date:會話產生的時間,如果收到來自同一個phone number多條信息,并且有多于 一條信息未讀,那么date可能表示收到的最后一條信息時的時間,也可能是這個phone number最后一次發(fā)送信息時的時間,可以統(tǒng)稱為與此phone number最后一次交互信息的時 間;
[0082] message_count:收到的信息的數(shù)目(sms和mms之和);
[0083] snippet:如果來自某個phone number,僅僅有一條信息,那么會是如下情況:
[0084] (1)如果是未接短信,代表未接短信的內容;
[0085] (2)如果是未接彩信,代表未接彩信的subject。
[0086] 如果來自某個phone number,僅僅有多條信息,那么則是如下情況:
[0087] (1)如果是最后一條是未接短彳目,代表最后一條未接短彳目的內容;
[0088] (2)如果是最后一條是未接彩信,代表最后一條未接彩信的subject。
[0089]然而,snippet字段保存的是此會話對應的最近一條信息(有可能是短信或者彩 信,也有可能是接收類型或者發(fā)送類型)的內容,而且在數(shù)據(jù)庫中此字段存儲的其實是最近 一條信息的完整內容,只是界面布局里內容一般只能顯示在一行,對于過長的內容無法完 整顯示用省略號代替。
[0090] read:0代表未讀、1代表已讀;
[0091 ] has_attchment:代表來自該phone number的信息是否包含有附件。
[0092] 2、存放短信的表(sms表)
[0093] sms表的示例如下:
[0095] 其中,_id:區(qū)分不同的短信;
[0096] threads_id:(外鍵)引用threads表的_id;
[0097] date:對于接收類型的短信是該條短信接收的時間,對于發(fā)送類型的短信則是發(fā) 送此短信的時間。
[0098]另外sms表中還有一個type字段表示短信的類型為已發(fā)送或接收或正在發(fā)送或草 稿,同后面pdu表中msg_box的概念。
[0099] read:0代表未讀、1代表已讀;
[0100] body:表示具體的短信內容(雖然在thread表的snippet字段已經存儲了最近一條 信息完整的body內容);
[0101 ] locked:鎖定短信,如果標識某條信息為locked時,刪除這條信息時,系統(tǒng)會提示 "是否刪除locked信息"。
[0102] 3、存放彩信的表(pdu表、part表)
[0103] pdu表的示例如下:
[0104]
[0105] 其中,_id:區(qū)分不同的彩信
[0106] thread_id:外鍵(引用 thread 表的 _id)
[0107] msg_box:區(qū)分彩信的收件箱,發(fā)件箱,草稿箱等;
[0108] read:是否已讀,0代表未讀、1代表已讀;
[0109] sub:彩信的subject;
[0110] ct_l:如果彩彳目太大,或者由于網絡原因,也又是由于手機設備原因,dowload失 敗,彩信看不了,這個字段就會有彩信的網址。
[0111] part表的示例如下:
[0112]
[0113] 其中,_id:區(qū)分某條彩信的不同附件(包括文本,圖片,音頻,視頻等格式);
[0114] mid:外鍵,引用pdu表的_id.指示該附件屬于哪條彩信(一條彩信有可能包含有多 個圖片,多個音頻,多個視頻等);
[0115] ct:指示附件是什么類型的(text/表示文本,audio/表示音頻,video/表是視頻, image/表示圖片)
[0116] _data:標明附件存放的位置;
[0117] text:表示彩信的主體body。
[0118] 4、存放phone number的表(Canonical_address表)
[0119] Canonical_address表的不例如下:
[0121 ] 其中,_id:外鍵,引用threads表的recipient_id字段;
[0122] address:代表發(fā)送或接收通信信息的移動通信終端的phone number(電話號碼)。
[0123] 要想恢復通信信息,一般是備份信息數(shù)據(jù)庫,如_ssms. db。
[0124] 本發(fā)明實施例可以通過定時、定量、手動觸發(fā)等方式進行自動備份一次保存信息 數(shù)據(jù)庫,如mms sms ? db 〇
[0125] 即從默認的信息數(shù)據(jù)庫目錄,如data/data/com ? android ? mms/databases/中復制 一份保存信息數(shù)據(jù)庫(如mmssms.db),到另外一個目錄中。
[0126] 此目錄可選擇為data/data/com? android? mms/backup/,這樣同時就會有兩個信 息數(shù)據(jù)庫(如mmssms. db),一個是常規(guī)的用于正常顯示和操作,另一個是備份文件,用于當 常規(guī)的信息數(shù)據(jù)庫損壞并刪除后,恢復通信信息。
[0127] 以定時備份為例,可以在移動通信終端中查詢信息數(shù)據(jù)庫的上一次的備份時間;
[0128] 計算上一次的備份時間與當前時間之間的時間差值;
[0129] 當時間差值大于或等于預設的時間閾值(如24小時)時,復制存儲通信信息的信息 數(shù)據(jù)庫,獲得備份數(shù)據(jù)庫。
[0130] 為使本領域技術人員更好地理解本發(fā)明實施例,如圖2所示,以下通過具體的示例 來說明本發(fā)明實施例中信息數(shù)據(jù)庫的定時備份方法。
[0131] 在步驟S11中,移動通信終端開機,開始對定時進行判斷。
[0132] 例如,在六11(11'〇1(1系統(tǒng)中,可以監(jiān)聽開機廣播&11(11'〇1(1.;[1^6111:.&(31:;[011.13001'_ COMPLETED0
[0133] 若監(jiān)聽到,則表示移動通信終端啟動,可以啟動定時備份的服務Server。
[0134] 在步驟S12中,判斷當前時間currentTime與上一次的備份時間backupTime之間的 差是否大于或等于24小時hours(時間閾值):
[0135] (currentT ime-backupT ime)> = 24hours 〇
[0136] 其中,backupTime的初始值為為恢復出廠設置后首次開機的時間。
[0137] 若是,則執(zhí)行步驟S14,若否,則執(zhí)行步驟S13。
[0138] 在步驟S13中,啟動定時器,定時器的啟動時間為上一次的備份時間之后的24小 時,即 backupTime+24hours 〇
[0139] 在步驟S14中,開始備份信息數(shù)據(jù)庫。
[0140]若備份成功則直接保存backupTime為當前時間;
[0141]若失備份敗則可重試一次,之后不管成功與否都保存backupTime為當前時間。
[0142]在步驟S15中,啟動定時器,定時器的啟動時間為上一次的備份時間之后的24小 時,即 backupTime+24hours 〇
[0143] 在步驟S16中,到達(backupTime+24hours)的時間,定時器爆發(fā),備份信息數(shù)據(jù)庫。
[0144] 步驟102,當檢測所述信息數(shù)據(jù)庫異常時,刪除所述信息數(shù)據(jù)庫;
[0145] 步驟103,將所述備份數(shù)據(jù)庫恢復為新的信息數(shù)據(jù)庫。
[0146] 在本發(fā)明實施例中,如果檢測到信息數(shù)據(jù)庫異常,則可以刪除信息數(shù)據(jù)庫。
[0147] 如圖3所示,在Android系統(tǒng)中,提供了SQLiteDatabase類代表一個數(shù)據(jù)庫(對應底 層的mmssms. db文件),一旦應用程序獲得了指定數(shù)據(jù)庫的SQLiteDatabase對象,就可以通 過此對象來操作信息數(shù)據(jù)庫了。
[0148] 另外,Android系統(tǒng)還提供了一個管理數(shù)據(jù)庫的工具類SQLiteOpenHelper,用于管 理信息數(shù)據(jù)庫的創(chuàng)建和版本更新,其構造函數(shù)中有一個參數(shù)類型是 DatabaseErrorHandler,此參數(shù)會監(jiān)聽數(shù)據(jù)庫的各種異常情況。
[0149] 當信息數(shù)據(jù)庫損壞的情況下,打開數(shù)據(jù)庫時會上報 SQLiteDatabaseCorruptException異常,即數(shù)據(jù)庫的磁盤映像格式不正確,這個時候 DatabaseErrorHandl er里面的onCurrupt ion ()會被調用,然后會刪除損壞的信息數(shù)據(jù)庫。
[0150] 刪除損壞的信息數(shù)據(jù)庫之后,可以將備份數(shù)據(jù)庫從其存儲目錄,如data/data/ com.android.mms/backup/,復制到信息數(shù)據(jù)庫的存儲目錄中,如data/data/ com ? android .mms/databases/,作為新的信息數(shù)據(jù)庫。
[0151] 本發(fā)明實施例在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備份,移動通 信終端在運行過程中,由于系統(tǒng)異常偶爾會出現(xiàn)掉電重啟或死機等異常情況,此時信息數(shù) 據(jù)庫可能出現(xiàn)突然損壞的情況,則刪除該信息數(shù)據(jù)庫,并將備份的備份數(shù)據(jù)庫恢復為新的 信息數(shù)據(jù)庫,由于常用的備份機制可以保證備份數(shù)據(jù)庫中保存有損壞的信息數(shù)據(jù)庫時的大 部分通信信息、甚至全部通信信息,因此,以此備份數(shù)據(jù)庫進行恢復,可以大大減少用戶的 通信信息的丟失,提高了信息數(shù)據(jù)庫的實用性。
[0152] 參照圖4,示出了本發(fā)明的一種信息數(shù)據(jù)庫的異常處理方法實施例2的步驟流程 圖,具體可以包括如下步驟:
[0153] 步驟401,在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備份,獲得備份數(shù) 據(jù)庫;
[0154] 步驟402,接收在加載所述信息數(shù)據(jù)庫時上報的異常信息;
[0155] 步驟403,調用指定的刪除接口刪除所述信息數(shù)據(jù)庫;
[0156] 步驟404,發(fā)送異常廣播;
[0157] 在Android系統(tǒng)中,當信息數(shù)據(jù)庫損壞的情況下,打開數(shù)據(jù)庫時會上報 SQLiteDatabaseCorruptException 異常的異常信息。
[0158] 當DatabaseErrorHandler監(jiān)聽到信息數(shù)據(jù)庫有異常時,onCurruption()會被調 用,在此接口里會刪除掉已損壞的信息數(shù)據(jù)庫。
[0159] 為了在通信信息應用中可以及時獲取到信息數(shù)據(jù)庫是否被損壞的消息,本發(fā)明實 施例中修改了信息數(shù)據(jù)庫異常處理的機制,復寫DatabaseErrorHandler的onCurruption() 接口:
[0160]當檢測到mmssms .db文件損壞后,調用onCurruption()接口(刪除接口)刪除損壞 的mmssms. db文件,同時發(fā)送一個異常廣播,告訴通信信息應用的信息數(shù)據(jù)庫已損壞,需要 進行恢復處理。
[0161] 步驟405,當監(jiān)聽到異常廣播時,將所述備份數(shù)據(jù)庫復制至所述信息數(shù)據(jù)庫的存儲 目錄中,作為新的信息數(shù)據(jù)庫;
[0162] 步驟406,重啟所述信息數(shù)據(jù)庫所屬的進程;
[0163] 步驟407,加載所述新的信息數(shù)據(jù)庫。
[0164] 在具體實現(xiàn)中,通信信息的信息數(shù)據(jù)庫發(fā)生了意外損壞,但是移動通信終端沒有 掉電重啟。
[0165] 此時可以在通信信息應用中注冊監(jiān)聽信息數(shù)據(jù)庫異常的廣播接收器。
[0166] 當接收到異常廣播后得知信息數(shù)據(jù)庫發(fā)生了損壞,且被損壞的信息數(shù)據(jù)庫已被刪 除,于是將自動備份的mmssms . db文件復制到默認信息數(shù)據(jù)庫的目錄data/data/ com.android.mms/databases/中。
[0167] 然后,重新啟動通信信息應用(com.android.mms)的進程,當用戶再次進入信息界 面時會重新讀取data/data/com. android ? mms/databases/目錄下新的信息數(shù)據(jù)庫,加載通 信信息的數(shù)據(jù)并進行顯示。
[0168] 參照圖5,示出了本發(fā)明的一種信息數(shù)據(jù)庫的異常處理方法實施例3的步驟流程 圖,具體可以包括如下步驟:
[0169] 步驟501,在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備份,獲得備份數(shù) 據(jù)庫;
[0170] 步驟502,接收在加載所述信息數(shù)據(jù)庫時上報的異常信息;
[0171 ]步驟503,復制所述信息數(shù)據(jù)庫,獲得異常數(shù)據(jù)庫;
[0172]步驟504,調用指定的刪除接口刪除所述信息數(shù)據(jù)庫;
[0173]在Android系統(tǒng)中,當信息數(shù)據(jù)庫損壞的情況下,打開數(shù)據(jù)庫時會上報 SQLiteDatabaseCorruptException 異常的異常信息。
[0174] 當DatabaseErrorHandler監(jiān)聽到信息數(shù)據(jù)庫有異常時,onCurruption()會被調 用,在此接口里會刪除掉已損壞的信息數(shù)據(jù)庫。
[0175] 為了在通信信息應用中可以及時獲取到信息數(shù)據(jù)庫是否被損壞的消息,本發(fā)明實 施例中修改了信息數(shù)據(jù)庫異常處理的機制,復寫DatabaseErrorHandler的onCurruption() 接口:
[0176] 當檢測到mmssms. db文件損壞后、刪除mmssms. db文件之前,復制一份此mmssms. db 文件作為異常數(shù)據(jù)庫,命名為mmssms_abnormal .db。
[0177] 然后調用onCurruption()接口刪除損壞的mmssms .db文件,同時發(fā)送一個異常廣 播,告訴通信信息應用的信息數(shù)據(jù)庫已損壞,需要進行恢復處理。
[0178] 步驟505,當移動通信終端重啟時,檢測是否存在異常數(shù)據(jù)庫;
[0179] 步驟506,當存在異常數(shù)據(jù)庫時,檢測所述信息數(shù)據(jù)庫的最新恢復時間是否小于所 述異常數(shù)據(jù)庫的創(chuàng)建時間;若是,則執(zhí)行步驟507;
[0180]步驟507,將所述備份數(shù)據(jù)庫復制至所述信息數(shù)據(jù)庫的存儲目錄中,作為新的信息 數(shù)據(jù)庫;
[0181] 步驟508,重啟所述信息數(shù)據(jù)庫所屬的進程;
[0182] 步驟509,加載所述新的信息數(shù)據(jù)庫。
[0183] 在本發(fā)明實施例中,若移動通信終端突然發(fā)生掉電重啟,導致正在操作的通信信 息數(shù)據(jù)庫發(fā)生了損壞。
[0184] 即便在通信信息應用中注冊監(jiān)聽信息數(shù)據(jù)庫異常的廣播接收器,也無法監(jiān)聽到異 常廣播。
[0185] 但是,在重啟之前DatabaseErrorHandler起了作用,即已復制出了mmssms_ abnormal. db文件,且刪除了損壞的mmssms. db文件。
[0186] 在重啟之后,增加一個檢測mmssms_abnormal. db文件是否存在,若存在,則在檢測 信息數(shù)據(jù)庫的最新恢復時間restoreTimd即上一次恢復的時間,默認為恢復出廠設置后首 次開機的時間)是否小于異常數(shù)據(jù)庫的創(chuàng)建時間createTime。
[0187] 若restoreTime < createTime,說明移動通信終端在開機前,其信息數(shù)據(jù)庫已經損 壞,則可以將自動備份的mmssms . db文件復制到默認信息數(shù)據(jù)庫的目錄data/data/ com.android.mms/databases/中。
[0188] 然后,重新啟動通信信息應用(com.android.mms)的進程,當用戶再次進入信息界 面時會重新讀取data/data/com. android ? mms/databases/目錄下新的信息數(shù)據(jù)庫,加載通 信信息的數(shù)據(jù)并進行顯示。
[0189] 需要說明的是,異常數(shù)據(jù)庫可以上傳至服務器,以供技術人員對此進行分析,尋找 異常的原因。
[0190] 需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組 合,但是本領域技術人員應該知悉,本發(fā)明實施例并不受所描述的動作順序的限制,因為依 據(jù)本發(fā)明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該 知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明實施 例所必須的。
[0191] 參照圖6,示出了本發(fā)明的一種信息數(shù)據(jù)庫的異常處理裝置實施例的結構框圖,具 體可以包括如下模塊:
[0192] 信息數(shù)據(jù)庫備份模塊601,用于在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫 進行備份,獲得備份數(shù)據(jù)庫;
[0193]信息數(shù)據(jù)庫刪除模塊602,用于在檢測所述信息數(shù)據(jù)庫異常時,刪除所述信息數(shù)據(jù) 庫;
[0194] 備份數(shù)據(jù)庫恢復模塊603,用于將所述備份數(shù)據(jù)庫恢復為新的信息數(shù)據(jù)庫。
[0195] 在本發(fā)明的一個實施例中,所述信息數(shù)據(jù)庫刪除模塊602可以包括如下子模塊:
[0196] 第一異常信息接收子模塊,用于接收在加載所述信息數(shù)據(jù)庫時上報的異常信息;
[0197] 第一刪除接口調用子模塊,用于調用指定的刪除接口刪除所述信息數(shù)據(jù)庫;
[0198] 異常廣播發(fā)送子模塊,用于發(fā)送異常廣播。
[0199] 在本發(fā)明的一個實施例中,所述備份數(shù)據(jù)庫恢復模塊603可以包括如下子模塊:
[0200] 第一備份數(shù)據(jù)庫復制子模塊,用于在監(jiān)聽到異常廣播時,將所述備份數(shù)據(jù)庫復制 至所述信息數(shù)據(jù)庫的存儲目錄中,作為新的信息數(shù)據(jù)庫;
[0201] 第一進程重啟子模塊,用于重啟所述信息數(shù)據(jù)庫所屬的進程;
[0202] 第一信息數(shù)據(jù)庫加載子模塊,用于加載所述新的信息數(shù)據(jù)庫。
[0203] 在本發(fā)明的一個實施例中,所述信息數(shù)據(jù)庫刪除模塊602可以包括如下子模塊:
[0204] 第二異常信息接收子模塊,用于接收在加載所述信息數(shù)據(jù)庫時上報的異常信息;
[0205] 信息數(shù)據(jù)復制子模塊,用于復制所述信息數(shù)據(jù)庫,獲得異常數(shù)據(jù)庫;
[0206] 第二刪除接口調用子模塊,用于調用指定的刪除接口刪除所述信息數(shù)據(jù)庫。
[0207] 在本發(fā)明的一個實施例中,所述備份數(shù)據(jù)庫恢復模塊603可以包括如下子模塊:
[0208] 異常數(shù)據(jù)庫檢測子模塊,用于在移動通信終端重啟時,檢測是否存在異常數(shù)據(jù)庫;
[0209] 時間檢測子模塊,用于在存在異常數(shù)據(jù)庫時,檢測所述信息數(shù)據(jù)庫的最新恢復時 間是否小于所述異常數(shù)據(jù)庫的創(chuàng)建時間;若是,則調用第二備份數(shù)據(jù)庫復制子模塊;
[0210] 第二備份數(shù)據(jù)庫復制子模塊,用于將所述備份數(shù)據(jù)庫復制至所述信息數(shù)據(jù)庫的存 儲目錄中,作為新的信息數(shù)據(jù)庫;
[0211]第二進程重啟子模塊,用于重啟所述信息數(shù)據(jù)庫所屬的進程;
[0212] 第二信息數(shù)據(jù)庫加載子模塊,用于加載所述新的信息數(shù)據(jù)庫。
[0213] 在本發(fā)明的一個實施例中,所述信息數(shù)據(jù)庫備份模塊601可以包括如下子模塊:
[0214] 備份時間查詢子模塊,用于在移動通信終端中查詢所述信息數(shù)據(jù)庫的上一次的備 份時間;
[0215] 時間差值計算子模塊,用于計算所述上一次的備份時間與當前時間之間的時間差 值;
[0216] 備份數(shù)據(jù)庫獲得子模塊,用于在所述時間差值大于或等于預設的時間閾值時,復 制存儲通信信息的信息數(shù)據(jù)庫,獲得備份數(shù)據(jù)庫。
[0217] 對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關 之處參見方法實施例的部分說明即可。
[0218] 本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與 其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
[0219] 本領域內的技術人員應明白,本發(fā)明實施例的實施例可提供為方法、裝置、或計算 機程序產品。因此,本發(fā)明實施例可采用完全硬件實施例、完全軟件實施例、或結合軟件和 硬件方面的實施例的形式。而且,本發(fā)明實施例可采用在一個或多個其中包含有計算機可 用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上 實施的計算機程序產品的形式。
[0220] 本發(fā)明實施例是參照根據(jù)本發(fā)明實施例的方法、終端設備(系統(tǒng))、和計算機程序 產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖 中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些 計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理終端設 備的處理器以產生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理終端設備的處理器執(zhí) 行的指令產生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中 指定的功能的裝置。
[0221] 這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理終端設備 以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包 括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方 框或多個方框中指定的功能。
[0222] 這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理終端設備上,使得 在計算機或其他可編程終端設備上執(zhí)行一系列操作步驟以產生計算機實現(xiàn)的處理,從而在 計算機或其他可編程終端設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程 和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0223]盡管已描述了本發(fā)明實施例的優(yōu)選實施例,但本領域內的技術人員一旦得知了基 本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為 包括優(yōu)選實施例以及落入本發(fā)明實施例范圍的所有變更和修改。
[0224] 最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將 一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作 之間存在任何這種實際的關系或者順序。而且,術語"包括"、"包含"或者其任何其他變體意 在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包 括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品 或者終端設備所固有的要素。在沒有更多限制的情況下,由語句"包括一個……"限定的要 素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
[0225] 以上對本發(fā)明所提供的一種信息數(shù)據(jù)庫的異常處理方法和一種信息數(shù)據(jù)庫的異 常處理裝置,進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了 闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域 的一般技術人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上 所述,本說明書內容不應理解為對本發(fā)明的限制。
【主權項】
1. 一種信息數(shù)據(jù)庫的異常處理方法,其特征在于,包括: 在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備份,獲得備份數(shù)據(jù)庫; 當檢測所述信息數(shù)據(jù)庫異常時,刪除所述信息數(shù)據(jù)庫; 將所述備份數(shù)據(jù)庫恢復為新的信息數(shù)據(jù)庫。2. 根據(jù)權利要求1所述的方法,其特征在于,所述當檢測所述信息數(shù)據(jù)庫異常時,刪除 所述信息數(shù)據(jù)庫的步驟包括: 接收在加載所述信息數(shù)據(jù)庫時上報的異常信息; 調用指定的刪除接口刪除所述信息數(shù)據(jù)庫; 發(fā)送異常廣播。3. 根據(jù)權利要求2所述的方法,其特征在于,所述將所述備份數(shù)據(jù)庫恢復為新的信息數(shù) 據(jù)庫的步驟包括: 當監(jiān)聽到異常廣播時,將所述備份數(shù)據(jù)庫復制至所述信息數(shù)據(jù)庫的存儲目錄中,作為 新的信息數(shù)據(jù)庫; 重啟所述信息數(shù)據(jù)庫所屬的進程; 加載所述新的信息數(shù)據(jù)庫。4. 根據(jù)權利要求1所述的方法,其特征在于,所述當檢測所述信息數(shù)據(jù)庫異常時,刪除 所述信息數(shù)據(jù)庫的步驟包括: 接收在加載所述信息數(shù)據(jù)庫時上報的異常信息; 復制所述信息數(shù)據(jù)庫,獲得異常數(shù)據(jù)庫; 調用指定的刪除接口刪除所述信息數(shù)據(jù)庫。5. 根據(jù)權利要求4所述的方法,其特征在于,所述將所述備份數(shù)據(jù)庫恢復為新的信息數(shù) 據(jù)庫的步驟包括: 當移動通信終端重啟時,檢測是否存在異常數(shù)據(jù)庫; 當存在異常數(shù)據(jù)庫時,檢測所述信息數(shù)據(jù)庫的最新恢復時間是否小于所述異常數(shù)據(jù)庫 的創(chuàng)建時間; 若是,則將所述備份數(shù)據(jù)庫復制至所述信息數(shù)據(jù)庫的存儲目錄中,作為新的信息數(shù)據(jù) 庫; 重啟所述信息數(shù)據(jù)庫所屬的進程; 加載所述新的信息數(shù)據(jù)庫。6. 根據(jù)權利要求1或2或3或4或5所述的方法,其特征在于,所述在移動通信終端中對存 儲通信信息的信息數(shù)據(jù)庫進行備份,獲得備份數(shù)據(jù)庫的步驟包括: 在移動通信終端中查詢所述信息數(shù)據(jù)庫的上一次的備份時間; 計算所述上一次的備份時間與當前時間之間的時間差值; 當所述時間差值大于或等于預設的時間閾值時,復制存儲通信信息的信息數(shù)據(jù)庫,獲 得備份數(shù)據(jù)庫。7. -種信息數(shù)據(jù)庫的異常處理裝置,其特征在于,包括: 信息數(shù)據(jù)庫備份模塊,用于在移動通信終端中對存儲通信信息的信息數(shù)據(jù)庫進行備 份,獲得備份數(shù)據(jù)庫; 信息數(shù)據(jù)庫刪除模塊,用于在檢測所述信息數(shù)據(jù)庫異常時,刪除所述信息數(shù)據(jù)庫; 備份數(shù)據(jù)庫恢復模塊,用于將所述備份數(shù)據(jù)庫恢復為新的信息數(shù)據(jù)庫。8. 根據(jù)權利要求7所述的裝置,其特征在于,所述信息數(shù)據(jù)庫刪除模塊包括: 第一異常信息接收子模塊,用于接收在加載所述信息數(shù)據(jù)庫時上報的異常信息; 第一刪除接口調用子模塊,用于調用指定的刪除接口刪除所述信息數(shù)據(jù)庫; 異常廣播發(fā)送子模塊,用于發(fā)送異常廣播。9. 根據(jù)權利要求8所述的裝置,其特征在于,所述備份數(shù)據(jù)庫恢復模塊包括: 第一備份數(shù)據(jù)庫復制子模塊,用于在監(jiān)聽到異常廣播時,將所述備份數(shù)據(jù)庫復制至所 述信息數(shù)據(jù)庫的存儲目錄中,作為新的信息數(shù)據(jù)庫; 第一進程重啟子模塊,用于重啟所述信息數(shù)據(jù)庫所屬的進程; 第一信息數(shù)據(jù)庫加載子模塊,用于加載所述新的信息數(shù)據(jù)庫。10. 根據(jù)權利要求7所述的裝置,其特征在于,所述信息數(shù)據(jù)庫刪除模塊包括: 第二異常信息接收子模塊,用于接收在加載所述信息數(shù)據(jù)庫時上報的異常信息; 信息數(shù)據(jù)復制子模塊,用于復制所述信息數(shù)據(jù)庫,獲得異常數(shù)據(jù)庫; 第二刪除接口調用子模塊,用于調用指定的刪除接口刪除所述信息數(shù)據(jù)庫。
【文檔編號】G06F11/14GK106055424SQ201610340069
【公開日】2016年10月26日
【申請日】2016年5月19日
【發(fā)明人】王雙, 闕遠, 張艷鳳, 張博
【申請人】青島海信移動通信技術股份有限公司