【发布时间】:2016-04-26 08:25:00
【问题描述】:
我正在尝试向我的数据库添加一个版本。我跟着this answer 这样做了。问题是,每次我拨打GetDefaultSharedPreferences 时,似乎都找不到我存储的版本。这是我的代码:
public Database() {
var dbPath = DatabasePath;
int dbVersion;
ISharedPreferences sharedPrefs = PreferenceManager.GetDefaultSharedPreferences (Application.Context);
dbVersion = sharedPrefs.GetInt ("db_ver", 0);
if (!File.Exists (dbPath) || dbVersion != DATABASE_VERSION) {
CreateDatabase (dbPath);
}
database = new SQLiteConnection (dbPath);
}
void CreateDatabase(string dbPath) {
var s = Application.Context.Assets.Open (originalDBLocation);
var writeStream = new FileStream (dbPath, FileMode.OpenOrCreate, FileAccess.Write);
ReadWriteStream (s, writeStream);
writeStream.Close ();
ISharedPreferences sharedPrefs = PreferenceManager.GetDefaultSharedPreferences (Application.Context);
ISharedPreferencesEditor editor = sharedPrefs.Edit ();
editor.PutInt ("db_ver", DATABASE_VERSION);
editor.Commit();
}
当我在构建后第一次运行代码时,dbVersion 始终为 0。我是否更改 DATABASE_VERSION 都没有关系。当我关闭手机上的应用程序并再次打开它时,正确的版本被放入dbVersion。所以我猜重新安装应用程序时共享首选项会被删除?在我使用它们的其他应用程序中,情况并非如此。
有人知道我该如何解决这个问题吗?
提前致谢。
【问题讨论】:
-
所以你想在用户卸载应用程序后存储最后一个数据库版本?
-
试试 editor.apply();而不是 editor.Commit(); :)
-
@DevendraSingh 是的,基本上。我认为 SharedPreferences 做到了这一点,因为它在我的应用程序中使用它的其他任何地方都这样做。
-
@SandeepBhandari 它保持不变......
-
使用 defaultSharedPreference 的任何具体原因???
标签: android sqlite xamarin xamarin.android android-sqlite