【发布时间】:2020-03-04 21:12:32
【问题描述】:
一个包含 5-200 个对象的列表/集合(取决于应用程序用户),其中包含五个 40 个字符的 String 变量,需要在活动之间通用。
ViewModel 有利于 Fragment 之间的数据传输,但似乎不太适合 Activity 之间的数据传输,因为 ViewModel 的生命周期仅限于单个 Activity 的生命周期。
问题 1:是否可以让整个应用程序 - 而不是单个 Activity- ViewModelStoreOwner ?如果是怎么办?你会推荐一个 ViewModelSingleton 吗?
问题 2: 改用普通的单例怎么样?与 ViewModel 和 ViewModelSingleton 相比有什么优缺点?是否有可能将单例发送到垃圾收集器并丢失数据?
问题 3: Kotlin 中的object 定义了一个线程安全、延迟实例化的单例,非常棒,但不能直接传入参数。有多种方法可以传入参数。你建议什么方法,为什么?
问题 4: 也可以使用 sharedPreferences 传递数据,但似乎速度较慢。除了到目前为止提到的方法之外,您还有什么快速、稳健和灵活的建议吗?
谢谢。
【问题讨论】:
标签: android kotlin singleton viewmodel