2013-12-11 204 views
0

我已經完成了以下操作來獲取SQLite數據庫的備份/恢復工作。SQLite數據庫備份android

(1)從Google獲得註冊。

[http://developer.android.com/google/backup/signup.html][1]

(2)添加的關鍵清單XML文件

<application> <meta-data android:name="com.google.android.backup.api_key" android:value="backup_service_key_from_google" /> ... </application>

(3)添加我BACKAGENT劑在XML文件中

<application 
    android:allowBackup="true" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    ... 
    android:backupAgent="MyBackupAgent" android:restoreAnyVersion="true" 
    > 

(4)創建一個名爲MyBackupAgent的類

class MyBackupAgent extends BackupAgentHelper{ 
    @Override 
    public void onCreate(){ 
     FileBackupHelper dbs = new FileBackupHelper(this, "../databases/"+SQLHelp.dbName); 
     addHelper(SQLHelp.dbName, dbs); 
    } 
} 

(5)調用備份管理器備份

BackupManager mBackupManager = new BackupManager(this); 
    mBackupManager.dataChanged(); 

第5步之後,我看不出有什麼發生。我在MyBackupAgent中放置了一個斷點。 onCreate()函數中沒有任何東西停止。

有什麼建議嗎?

回答

1

這可能是因爲你根本沒有等到足夠長的時間。在參照呼叫的文檔,以dataChanged:

此調用通知備份管理器有數據準備是 備份到雲端。在將來的某個時候,備份管理器會調用您的備份代理的onBackup()方法。

備份不是馬上啓動。它計劃在未來一段時間。您可以通過在命令行上使用adb立即啓動備份。

請參閱http://developer.android.com/guide/topics/data/backup.html(測試您的備份代理)

+0

謝謝您的回覆。如何將「adb」命令合併到應用程序中?我有一個SQLLite數據庫,需要爲應用程序安裝進行備份和恢復。使用備份服務可能是一個糟糕的主意。我在現在使用的應用程序文件夾中使用JSONObject對象實現了文件備份。有沒有人試過Google驅動器作爲備份設備?在這種情況下,備份文件可能會被其他設備使用。我有一個使用Web服務進行數據存儲和備份的應用程序。在這個應用程序中,我不想使用中央服務器來進行備份/恢復。 – codingForFun

+0

adb是桌面應用程序,無法從應用程序中運行 – Kuffs

+0

有沒有辦法登錄Google雲查看備份文件? – codingForFun