【发布时间】:2019-01-17 20:02:59
【问题描述】:
虽然通常不建议使用扩展 Application 的类,但有哪些替代方法可以存储需要跨线程全局访问的变量?
SharedPreferences 无法选择,因为它的物理存储和频繁访问会导致性能问题
示例:一个购物应用,在 Application 类中保存有关上次查看产品的 int 值。该变量在视图回收器 onBindViewHolder 方法中使用,因此无法使用 SharedPreferences 访问它,因为它会在滚动时屏幕冻结
我现在知道的唯一方法是将它传递给构造函数参数,这很不错,因为它可能导致非常奇怪的构造函数参数,或者通过意图并不总是可行的解决方案(你好适配器)
【问题讨论】:
-
您保存了哪些信息?数据列表?为什么共享首选项不理想?
-
“虽然通常不建议使用扩展应用程序的类”此语句基于什么?
-
因为Android是“智能”的,一旦设备资源不足,他可以从Application类释放数据。还有更多github.com/codepath/android_guides/wiki/…
-
Android 从不“一旦设备资源不足,就会从 Application 类中释放数据”。它与 Application 类一起杀死了整个 Linux 进程。在这种情况下,您应该考虑永久存储,例如SharedPrefs。