android - 在 Application 类中存储变量的替代方法是什么?
问题描述
虽然通常不建议使用扩展类,Application
但有哪些替代方法可以存储需要跨线程全局访问的变量?
SharedPreferences 是不可选择的,因为它的物理存储和频繁访问它会导致性能问题
示例案例:在 Application 类中保存有关上次查看产品的 int 值的购物应用程序。该变量在视图回收器 onBindViewHolder 方法中使用,因此无法使用 SharedPreferences 访问它,因为它会在滚动时屏幕冻结
我现在知道的唯一方法是将它传递给构造函数参数,这很不错,因为它可能导致非常奇怪的构造函数参数,或者通过意图这并不总是可行的解决方案(你好适配器)
解决方案
存储需要跨线程全局访问的变量的替代方法是什么?
static
字段,最好是单例- 依赖注入的单例(例如,Dagger 2、Koin)
虽然通常不建议使用扩展应用程序的类
仅使用Application
子类来存储全局数据是没有意义的——单例是更好的选择。自定义Application
子类适用于每个进程的初始化,例如设置依赖注入框架、连接崩溃日志等。
推荐阅读
- data-modeling - RavenDb 不同的数据库实例包括
- react-native - 在 FlatList (React-Native) 中多选项目时出现滞后问题
- text - 应用 agnoster zsh 主题后,如何在终端中修复此损坏的文本?
- java - 以编程方式设置 lottie 动画视图的宽度和高度
- uitabbar - 是否可以在 tvOS 的 uitabbaritems 上为聚焦和选定状态使用不同的颜色?
- python - 而不是使用 drop_first=True,我如何在 pandas 中设置虚拟编码的参考级别
- php - 以编程方式增加唯一列的计数
- java - 二维数组中列的总和,Java
- android - 最新的 Samsung Pass 库?
- version-control - 在后端和前端之间管理版本的最佳实践