在应用程序类中存储变量的替代方法是什么



虽然通常不建议使用扩展Application的类,但存储需要跨线程全局访问的变量的替代方案是什么?

SharedPreferences是没有选择的,因为它的物理存储和频繁访问它会产生性能问题

示例案例:在应用程序类中保存有关上次查看产品的 int 值的购物应用。该变量用于BindViewHolder方法上的视图回收器,因此无法使用SharedPreferences访问它,因为它会在滚动时屏幕冻结

我现在知道的唯一方法是将其传递给构造函数参数,这是不错的,因为它可能会导致非常奇怪的构造函数参数,或者通过并不总是可行的解决方案的意图(hello adapters)

存储需要跨线程全局访问的变量的替代方法是什么?

  • static字段,最好是单例
  • 注入依赖关系的单例(例如,dagger 2、Koin)

虽然通常不建议使用扩展应用程序的类

仅使用 Application 子类来存储全局数据是没有意义的 — 单例是更好的选择。自定义Application子类适用于每个进程的初始化,例如设置依赖注入框架、挂接崩溃日志记录等。

相关内容

最新更新