天天看點

《Android應用開發攻略》——2.14 備份Android應用程式資料

pratik rupwal

2.14.1 問題

當使用者恢複出廠設定或者改用新的android裝置時,應用程式丢失存儲資料或者應用程式設定。

2.14.2 解決方案

android的backup manager(備份管理器)能夠在應用程式重新安裝時自動恢複備份資料或者應用程式設定。

2.14.3 讨論

android的備份管理器本質上以兩種模式運作——備份和恢複。在備份操作期間,備份管理器(backumanager類)詢問應用程式所要備份的資料,并将其放入一個備份傳輸中,備份傳輸負責将資料發送到基于雲的存儲中。在恢複操作期間,備份管理器從備份傳輸中讀取備份資料,并将其傳回給應用程式,以便将資料恢複到裝置上。應用程式可以請求恢複,但是在應用程式安裝且與使用者關聯的備份資料存在時,android并不一定執行恢複操作。恢複備份資料主要發生在使用者重置裝置或者更新到新裝置,并且重新安裝過去安裝的應用程式時。

例2-19展示了為應用程式實作備份管理器以儲存應用程式目前狀态的方法。

以下是這一過程各個步驟的簡單描述:

1 . 在eclipse中建立backupmanagerexample項目。

2 . 打開layout/backup_restore.xml檔案,并插入例2-19中的代碼。

3 . 打開values/string.xml檔案并插入例2-20中的代碼。

4 . 清單檔案看上去将類似于例2-21。

5 . 例2-22中的代碼完成了應用程式備份管理器的實作。

例2-19:備份/恢複布局

例2-20:示例使用的字元串

例2-21:androidmanifest.xml

例2-22:備份/恢複活動

資料備份不能保證在所有android裝置上可用。但是,如果裝置沒有提供備份傳輸,應用程式并不會受到不利影響。如果你相信使用者将從應用程式的資料備份中獲益,就可以按照這個文檔中描述的步驟實作、測試這一功能,然後釋出應用程式,而不考慮裝置是否實際執行備份。當應用程式在不提供備份傳輸的裝置上運作時,它将正常運作,但是不會接受來自備份管理器的回調來備份資料。

盡管你無法知道目前傳輸手段是什麼,但是始終可以确信,備份資料不會被裝置上的其他應用程式讀取。隻有備份管理器和備份傳輸有權通路備份操作中所提供的資料。

警告: 因為雲存儲和傳輸服務在不同的裝置上可能有差别,android不能保證備份中的資料安全。在使用備份存儲敏感資料(如使用者名和密碼)時,應該始終保持警惕。

測試你的備份代理

實作備份代理之後,可以使用bmgr指令,按照如下步驟測試備份/恢複功能:

1 . 在合适的android系統映像上安裝你的應用程式。如果使用模拟器,建立和使用帶有android 2.2(api level 8)的avd。如果使用真實裝置,裝置必須運作android 2.2或更高版本并内建android market。

2 . 確定備份功能啟用。如果使用的是模拟器,可以從sdk tools/路徑用如下指令啟用備份功能:

adb shell bmgr enable true

如果使用的是裝置,打開系統設定,選擇privacy(隐私),然後啟用“back up my data” (備份我的資料)和 “automatic restore”(自動恢複)。

3 . 打開應用程式并初始化某些資料。

如果在你的應用程式中已經正常地實作了備份功能,在每次資料改變時将要求備份。例如,每當使用者修改某些資料,應用程式将會調用datachanged(),該方法在備份伺服器隊列中添加一個備份請求,為了測試,你也可以用如下的bmgr指令發出一個請求:

adb shell bmgr backup your.package.name

4 . 初始化備份操作:

adb shell bmgr run

這條指令強制備份管理器執行隊列中的所有備份請求。

5 . 解除安裝你的應用程式:

adb uninstall your.package.name

6 . 重新安裝應用程式。

如果備份代理成功,第4步中初始化的所有資料将被恢複。

繼續閱讀