在Application类中存储变量的替代方法是什么?

时间:2019-01-17 20:02:59

标签: android global-variables

虽然通常不建议使用扩展Application的类,但存储跨线程全局访问所需的变量的存储方式有哪些呢?

SharedPreferences由于其物理存储和频繁访问它而导致性能问题,因此已成为选择

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

我现在唯一知道的方法是将它传递给适当的构造函数参数,因为它可能导致非常奇怪的构造函数参数,或者通过意图(并非总是可行的解决方案)(您好,适配器)

1 个答案:

答案 0 :(得分:4)

  

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

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

虽然通常不建议使用扩展Application的类

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