我在我的应用中将 AndroidX Room 组件用于小型离线数据库。我希望能够将用户的位置(纬度和经度)保存到数据库中,供以后使用。 如何做到这一点以及最佳做法是什么?
我以前从未这样做过,在网上找不到任何帮助。
这就是我实际做的方式(显然是错误的方式):
@ColumnInfo(name = "session_location")
var sessionLocation: Location
我得到一个错误无法弄清楚如何将这个字段保存到数据库中
最佳答案
Location
类是什么?它是 android.location.Location
还是您定义的某个数据类?
在任何情况下,我都会使用 @Embedded
POJO 类而不是其他人推荐的 TypeConverters
。
如果 Location
是您已经定义的类,那么只需在您的 sessionLocation 之上添加 @Embedded
注释
@Embedded
@ColumnInfo(name = "session_location")
var sessionLocation: Location
否则,如果 Location
是 android.location.Location
,那么您不需要在该类中存储所有信息。您必须需要基本的 lat & long
。
我会创建一个类 Location
并存储这些基本信息并将其添加为 @Embedded
。像下面这样的东西
class Location {
var latitude: Double = 0
var longitude: Double = 0
}
class User {
@Embedded
@ColumnInfo(name = "session_location")
var sessionLocation: Location
}
正如其他人所建议的那样,TypeConverter
是一种解决方案,但无需序列化/反序列化 POJO
,只需直接保存即可。
关于android - 如何从房间数据库中的位置对象保存和检索纬度和经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56992855/