我正在使用Kotlin编写一个Android应用程序。我使用关键字 object 创建了一个单例对象,以在Activity及其后台服务之间共享一些配置,如下所示:
object Configuration { var propertyMap: HashMap<String, String>() = HashMap() }
我在服务内部初始化Configuration对象,并且可以在服务类内部的任何地方使用它。但是,如果尝试使用Configuration.propertyMap
访问活动内的单例对象,则会得到一个空的哈希图。
答案 0 :(得分:0)
对我来说,似乎有更好的方法。您能否提供更多详细信息? 还要注意,对象是单例并且您将其属性声明为val并不能保护您在并发修改地图时招致这一事实。在上下文很少的情况下,我会考虑更安全的选择,例如存储此conf。在数据库内部,或者,如果您不使用数据库,SharedPreferences可以为您提供帮助。例如,您可以将设置存储为JSON编码的字符串,并在需要时对它进行序列化/反序列化(这将避免您使用序列化或Parcelable)。请记住,您选择的方法还取决于您保留的数据量。如果地图很大,则存在内存不足的风险。如果两个组件在不同的过程中,则可以查看here使用的方法。