2010-02-02 29 views
3

我測試了Android可能會通過newVersion < oldVersionSQLiteOpenHelper.onUpgrade()方法,即。它希望應用程序降級其數據庫。Android上降級數據庫

我不想處理這種情況,儘管我想以某種方式通知用戶存在我的應用程序的更新版本(她顯然已經安裝過),這是她應該使用的一個。

任何想法什麼是最好的方式來實現這一目標? ToastAlertDialog(但在什麼情況下)?

回答

2

事實上,你可以用比「舊」版本更小的「新」版本調用該方法,但它何時會發生?

除非您希望您的用戶手動重新安裝您的應用程序,並使用較早的APK覆蓋它,否則無需考慮此問題。

+1

想象一下這種情況。您是一名超級用戶,使用我的應用並享受它。然後我發佈了一個你安裝但不喜歡的新版本(例如,你認爲它已經增長太多併成爲英國媒體報道),所以你決定手動安裝舊版本的apk。如果我在onUpgrade()中沒有做任何事情來處理這種情況,用戶數據可能會損壞,或者我可以拋出RuntimeException來阻止應用程序運行。這兩種解決方案都不適合我。我知道這將是一個非常罕見的情況,但我想知道答案但是:] – 2010-02-02 20:16:07

+1

似乎對我來說是一個合理的情況,但我不確定爲什麼你要承擔在這種情況下的應用程序錯誤 - 這是迄今爲止一個非標準的使用場景。我認爲高級用戶可能會期望他們必須進行乾淨的安裝來降級。 – 2010-02-02 20:28:11

+0

丹尼爾,我想你是對的。麻煩並不重要。在這種情況下,我想我只會引發RuntimeException。謝謝你說服我;] – 2010-02-02 20:48:03

-1

我們的應用程序有多個活動分支(例如v1.x和v2.x),我們在內部提供測試版本。這意味着測試人員偶爾會將舊版本安裝在新版本的頂部。

在這種情況下(一個有用的錯誤彈出窗口,吹走數據庫等)是一個好主意,否則測試者會看到一個「強制退出」消息,然後我們必須查看adb logcat日誌以確認這是由於版本不匹配。

最初我擔心有其他合理的情況發生,例如,何時在Android電子市場中重新激活舊版本(例如,由於新版本中的災難性錯誤)。

然而,Android docs好像說,你不能激活舊版本:

您不能激活具有比它替換的APK低的版本代碼的新APK。

所以要打這種情況下,你需要用新版本號重建舊版本,然後才能激活它。海事組織仍然值得應對這種情況,因爲有人可能在凌晨4點很容易犯這個錯誤,同時試圖退出一個不好的版本!

+0

這隻適用於Playstore版本。每個用戶仍然可以從存儲的apk文件安裝任何舊版本的應用程序。 – Radon8472 2015-06-17 05:47:50

相關問題