首页 文章

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

提问于
浏览
0

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

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

我在服务中初始化Configuration对象,我可以在服务类中的任何地方使用它 . 但是,如果我尝试使用 Configuration.propertyMap 访问活动中的单例对象,我会得到一个空的hashmap .

1 回答

  • 0

    对我来说听起来有更好的方法 . 你能提供更多细节吗?另请注意,对象是单例并且将其属性声明为val的事实不会保护您在映射的并发修改中发生 . 由于上下文很少,我会考虑更安全的选择,比如存储这个conf . 在数据库内部,或者,如果您没有使用数据库,SharedPreferences可以帮助您 . 例如,您可以将设置存储为JSON编码的字符串,并在需要的地方对其进行序列化/反序列化(这将避免使用序列化或Parcelable) . 请记住,您将选择的方法还取决于您保留的数据量 . 如果 Map 很大,则存在内存不足问题 . 如果两个组件在不同的进程上,您可以查看使用的方法here .

相关问题