Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> 系統備份 >> android 數據備份恢復(一)

android 數據備份恢復(一)

編輯:系統備份

簡介: 移動互聯網是一個新型的融合型網絡,隨著其高速的發展,將會有越來越多的 3G 手機用戶,而手機中有許多重要的數據,本文介紹了基於 android 備份恢復這些數據的一種實現方法。

引言

隨著 3G 時代的到來,移動互聯網的發展,手機的功能越來越強大,手機裡的數據對每個用戶來說都非常的重要,特別是通訊錄、日程、短信息、郵件等數據,一旦手機丟失、誤刪或其他意外使得數據無法正常使用,會給用戶帶來麻煩,數據備份與恢復這個應用可以幫助用戶解決這個問題。

本文主要論述了基於 android 平台所提供的開發框架和應用組件,並給出了一種數據備份恢復的設計與實現。


背景知識介紹

當前流行的智能手機操作系統有 Windows Mobile,SymBian,iPhone OS,Android 等。本文基於目前最熱門的 android 系統平台,該平台具有開源、易用、開發方便、與個人電腦有較強的融合性等眾多優勢。

android 架構


圖 1. android 架構圖
圖 1. Android 架構圖 
 

Application:

android 會與一個核心應用程序包一起發布,如通訊錄、短信息、浏覽器等,所有的應用使用 Java 語言所開發。

Application Framework:

android 應用程序框架對於開發者也完全可以訪問核心應用程序所使用的 API 框架。該應用程序架構用來簡化組件軟件的重用;任何一個應用程序都可以發布它的功能塊並且任何其它的應用程序都可以使用其所發布的功能塊。該應用程序重用機制使得組建可以被用戶替換。

LibrarIEs:

Android 程序庫包括一個被 Android 系統中各種不同組件所使用的 C/C++ 庫集。該庫通過 android 應用程序框架為開發者提供服務。

Linux Kernel:

內核 android 的核心系統服務依賴於 Linux 2.6 內核,如安全性,內存管理,進程管理,網絡協議棧和驅動模型。 Linux 內核也同時作為硬件和軟件堆棧之間的硬件抽象層。


備份恢復的設計與實現

備份的方式有本地備份、網絡備份,本地備份是直接將數據備份到 SDcard 存儲介質中;網絡備份是將數據備份到網絡服務器中。網絡服務器系統是基於 J2EE 架構,通過 HTTP(HTTPS)協議對終端提供服務,備份的應用的數目可以大於等於 1,這裡只備份通訊錄。系統體系結構圖如下所示:


圖 2. 數據備份與恢復體系結構圖
圖 2. 數據備份與恢復體系結構圖 
 

本地備份恢復

本地備份恢復客戶端的流程

用戶選擇本地 Backup 或 Restore,通過向 Contacts 發送廣播信號,如果 Contacts 准確收到廣播信號後,開始執行 Backup 或 Restore 操作,完成後反饋操作結果。流程圖如下所示:


圖 3. 本地備份恢復流程圖
圖 3. 本地備份恢復流程圖 
 

本地備份恢復客戶端的序列圖:

在序列圖中,客戶端選擇本地備份或本地恢復後,發送廣播消息通知 Contacts 應用開始備份或恢復 (ContactsReceiver 根據信號類別 : 執行備份或恢復操作 ),通過 FileInputStream 和 FileOutputStream 對數據庫文件進行 read/write。

如果是本地備份則將自身的數據庫文件寫到 SDCard;如果是本地恢復將 SDCard 中對應的文件寫到 Contacts 應用對應的路徑下,用以覆蓋原始數據庫文件。

用 Environment.getExternalStorageDirectory() 方法獲取 SD 卡的路徑 , 卡存儲空間大小及已占用空間獲取方法 :

  /* 獲取存儲卡路徑 */ 
 File sdcardDir=Environment.getExternalStorageDirectory(); 
 /*StatFs 看文件系統空間使用情況 */ 
 StatFs statFs=new StatFs(sdcardDir.getPath()); 
 /*Block 的 size*/ 
 Long blockSize=statFs.getBlockSize(); 
 /* 總 Block 數量 */ 
 Long totalBlocks=statFs.getBlockCount(); 
 /* 已使用的 Block 數量 */ 
 Long availableBlocks=statFs.getAvailableBlocks(); 

 

序列圖如下所示:


圖 4. 本地備份恢復序列圖
圖 4. 本地備份恢復序列圖 
 

本地備份恢復客戶端的實現:

如下圖給出了 BackupRestoreActivity 和 ContactsReceiver 的類圖,以及他們工作機制中涉及到的類的結構。


圖 5. 本地備份恢復類圖
圖 5. 本地備份恢復類圖 
 

  • Intent 在這裡起著一個媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調 用者之間的解耦 .
  • 此處的 IntentFilter 起動態注冊 action, 使之用於接收同 action 的廣播消息 IntentFilter
    commandFilter = newIntentFilter(); 
     commandFilter.addAction("signal"); 
     registerReceiver(BroadcastReceiver, commandFilter); 
     BroadcastReceiver 用來接收和響應廣播消息
    

     
  • Handler 主要接受子線程發送的數據 , 並用此數據配合主線程更新 UI.
  • ContactsReceiver 調用 Thread 開啟一個線程 , 用以接收由 BackupRestoreActivity 發出的備份 / 恢復信號。
  • NetToolHandler(用於網絡備份恢復)定義了一些用來和服務器進行交互的方法;IHttpResponse 是在 NetToolHandler 中定義的一個內部接口,主要用來回調 NetToolHandler 中返回的信息,根據返回的信息進行下一步操作。

用戶選擇本地備份或者本地恢復,ContactsReceiver 則收到廣播消息後,根據信號判斷操作的類別是備份還是恢復,然後啟動一個線程,在線程中調用 Handler,通過 Handler 去處理讀寫數據。

    No
  1. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved