2011-08-30 97 views
1

我已根據文檔實施了BackupAgentHelper,包括1.6的向後兼容性,以備份我的所有SharedPreferences。在仿真器Android 2.2中進行測試時,以及在通過USB運行Android 2.3.3的設備上運行時,它工作得很好。在這兩個測試案例中,我發出:adb shell bmgr run,這會觸發備份。從Android Market重新安裝時無法使BackupAgent正常工作

但是,當從Android Market重新安裝我的應用時,所有SharedPreferences都消失了。 之後,文檔中提到dataChanged()已被調用,「備份管理器隨後在適當的時候調用備份代理的onBackup()方法」。很好,但是有誰知道是什麼讓系統實際進行備份?我懷疑這不是發生在我的情況。

該文檔說:「如果使用設備,打開系統設置,選擇隱私,然後啓用備份我的數據和自動恢復。」但是我的設備中沒有這個選項(SE Xperia Mini)。我只能猜測這個選項總是被啓用並且不能被關閉。 我在瑞典使用Telia作爲我的運營商(如果有問題的話)。

任何人都知道爲什麼當從市場重新安裝時,備份不工作,但使用模擬器和通過USB在設備上完全正常工作?

+0

我認爲沒有選項實際上表明相反 - 不支持備份。在我的HTC Desire上,官方ROM顯示沒有備份選項(並且備份不起作用),但使用Cyanogenmod時,我看到選項。 –

回答

0

我以前使用Market時測試功能的嘗試是通過一個(相對較快?)的順序完成的。我在SharedPreferences中更改了一些參數後,甚至重新啓動了手機,然後卸載了我的應用程序,認爲關機會觸發待定備份同步操作。不幸的是,這並沒有觸發到備份服務器的同步,並且SharedPreferences丟失了。

現在是好的和翔實的部分。在卸載我的應用程序之前,我更改了一些SharedPreferences並讓手機保留了幾個小時。下次我從市場上安裝它時,SharedPreferences從雲備份恢復!所以解決方案就是讓「未來的適宜時間」成爲現實。我不喜歡這種行爲,但可以接受它,因爲我意識到每次調用dataChanged()時都不能同步到服務器。

至少現在我們知道,即使您的設備上不存在隱私下的「備份我的數據和自動恢復」選項,它仍會使用BackupAgent執行備份。它只需要一些(未定義數量的)時間來做到這一點。

相關問題