【发布时间】:2020-07-04 16:30:35
【问题描述】:
所以我有一个健身应用程序,其中涉及使用存储所有信息的数据库。
到目前为止,我一直使用虚拟设备来运行这个应用程序。
每次更改此应用程序数据库时,我都会擦除每个模拟器中的数据,增加数据库版本号,然后运行应用程序,一切正常。
前几天我决定使用我的华为 P20 Pro 而不是模拟器,我运行了该应用程序,它运行良好。
但是,在对数据库进行更改(并增加版本号)后,我的 P20 Pro 上的数据库不再初始化,我收到以下错误消息:
E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@b9caac1
E/MemoryLeakMonitorManager: MemoryLeakMonitor.jar is not exist!
E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@a6b9e54
我花了好几个小时在网上搜索问题的原因,但运气不佳。
收到同样错误信息的,好像都是华为用户……
MemoryLeakMonitor.jar is not exist! | Huawei Phone
(我不确定这是否相关)。
有谁知道错误消息的含义,以及为什么我无法在我的物理设备上初始化我的应用程序数据库?
数据库类(相关代码)
@Database(entities = {Junction.class, Exercise_Workout_Goals.class, Exercises.class, ExerciseType.class, Workouts.class,
WorkoutType.class, Log_Entries.class, ChildExercises.class, ChildParentExerciseJunction.class}, version = 53, exportSchema = false)
public static synchronized ExerciseDatabase getInstance(Context context) {
if (instance == null) {
instance = Room.databaseBuilder(context.getApplicationContext(),
ExerciseDatabase.class, "exercise_database")
.fallbackToDestructiveMigration()
.addCallback(roomCallback)
.build();
}
return instance;
}
【问题讨论】:
-
不要发布整个代码。只发布相关部分
-
可能该错误消息与您的数据库无关。如果它还没有在商店里,也许你可以删除所有这些迁移。您是否尝试手动从手机中卸载它以使其“重新开始”?在错误发生之前你到底做了什么改变?
-
我在数据库中添加了一些练习,并清除了日志条目表。我已经以与任何其他应用程序相同的方式从手机中卸载它,但是我不确定即使删除后应用程序数据是否仍存储在手机上的某个位置
-
@JoshBrett 我认为您发布的错误与您的数据库无关。此外
fallbackToDestructiveMigration()会在数据库版本更改时自动删除旧数据库中的所有内容并创建一个新数据库。在我的应用程序中,一切正常,尽管我只在 1 和 2 之间切换版本号(看到你达到 53 xD)并在三星的 API 级别 29 上进行了测试。你能在另一部手机上测试吗? -
你的华为手机有网络连接吗?是否也删除了应用的缓存?
标签: java android android-emulator