首页 > 解决方案 > 在 Application 类中存储变量的替代方法是什么?

问题描述

虽然通常不建议使用扩展类,Application但有哪些替代方法可以存储需要跨线程全局访问的变量?

SharedPreferences 是不可选择的,因为它的物理存储和频繁访问它会导致性能问题

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

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

标签: androidglobal-variables

解决方案


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

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

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

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


推荐阅读