2010-02-09 235 views
4

我正在尋找方法在Android手機上備份我的應用程序的數據庫。我知道SQLite數據庫只是文件,所以我希望能夠將文件複製到SD卡(如果有)。Android數據庫備份

但是,我不確定如何準備備份/恢復的數據庫/活動。

開始時,我的主要活動是從數據庫中的一個表中讀取條目,並將它們顯示在ListView中。如API的「註釋」示例所示,我有一個遊標,會自動通知有關該表的更改(當我添加/刪除/更新表中的記錄時,會自動更新ListView)。

所以:當我將數據庫文件複製到SD卡時,我不應該有問題。但是,如果用戶想要恢復數據庫文件呢?我不能只是將文件複製回數據文件夾,我可以(編輯:...而視圖顯示數據庫中的數據,因此可能保持打開連接)?

在執行備份/恢復時,什麼是「最佳實踐」?一種方法我認爲是:

  1. 打開一個特殊的「恢復」保存沒有打開數據庫連接
  2. 呼叫finish()爲 主要活動活動 將其刪除並關閉 數據庫連接
  3. 複製數據庫文件
  4. 打開主活動的新「實例」
  5. 調用finish()進行「恢復」活動

難道這是要走的路嗎?感謝您的任何建議!

回答

5

但是如果用戶想要恢復數據庫文件呢?我不能將文件複製回數據文件夾,我可以嗎?

是的,你可以。因爲您可以將文件您的數據文件夾移動到SD卡上的文件夾,您可以將文件移回SD卡到您的數據文件夾中。

您現在提出的建議是一種很好的方法,請記住,在備份/恢復過程中不需要任何打開的數據庫對象。

+0

我的意思是當視圖打開連接時我無法複製文件。當我完成從數據庫檢索數據的視圖時,所有連接都應該關閉,對吧? – 2010-02-10 11:12:40

+0

是的,這是正確的,你有正確的想法。 – 2010-02-10 13:37:17

+0

好的,謝謝,我會試試看! – 2010-02-11 11:20:52