Kotlin:我可以使用Singleton对象在Activity和Service之间共享数据吗?

时间:2018-08-02 23:02:58

标签: android kotlin singleton

我正在使用Kotlin编写一个Android应用程序。我使用关键字 object 创建了一个单例对象,以在Activity及其后台服务之间共享一些配置,如下所示:

object Configuration { var propertyMap: HashMap<String, String>() = HashMap() }

我在服务内部初始化Configuration对象,并且可以在服务类内部的任何地方使用它。但是,如果尝试使用Configuration.propertyMap访问活动内的单例对象,则会得到一个空的哈希图。

1 个答案:

答案 0 :(得分:0)

对我来说,似乎有更好的方法。您能否提供更多详细信息? 还要注意,对象是单例并且您将其属性声明为val并不能保护您在并发修改地图时招致这一事实。在上下文很少的情况下,我会考虑更安全的选择,例如存储此conf。在数据库内部,或者,如果您不使用数据库,SharedPreferences可以为您提供帮助。例如,您可以将设置存储为JSON编码的字符串,并在需要时对它进行序列化/反序列化(这将避免您使用序列化或Parcelable)。请记住,您选择的方法还取决于您保留的数据量。如果地图很大,则存在内存不足的风险。如果两个组件在不同的过程中,则可以查看here使用的方法。

相关问题