android - 使用对象存储从服务器检索的数据是否有任何问题?
问题描述
只要应用程序在后台,对象会一直存在吗?有谁知道 Kotlin 对象何时从内存中删除并在 Android 中重置?我应该只使用 ViewModel 吗?
解决方案
当应用程序在后台时,您无法知道系统将如何处理它,因此您无法在内存中存储您想要持久的数据。你有不同的解决方案:
- 如果它是来自服务器的数据,如果在用户将其置于后台和应用程序恢复之间的那一刻应用程序已被破坏,您可以再次调用。
- 您可以将数据存储在本地。
在第二种情况下,您有 3 个解决方案:
- 将数据持久化到 SQL 数据库中,例如使用 Room 之类的解决方案。这通常是这样做的方法。
- 将数据保存到共享首选项中。用于轻量级数据,例如设置或小偏好
- 将它们存储到文件中(通常不是一个好方法)
ViewModel不是一种持久化数据的方法。它只会将数据保存在内存中。最好在UI被销毁时保留数据(例如,应用程序改变方向,或 Fragment 放入后台堆栈)但是如果应用程序被终止(出于任何原因),ViewModel 及其包含的所有内容也将被终止。
然而,遵循 MVP 或 MVVM(使用 ViewModel)模式是构建应用程序的好方法,因为它将 UI 与逻辑分离并有助于测试。
推荐阅读
- plc - 如何使用 opc ua 从 PLC 读取信号?
- php - Maatwebsite/Excel 导出错误
- python - CYTHON,我如何将成员函数作为回调传递给本机
- javascript - 无法使用量角器选择组件按钮
- cassandra - 如何在 cql 中指定创建表的列长度?
- android - 以编程方式调用通用字符串资源
- angular - Bootstrap 面板在 Angular 最新 cli 中不起作用
- ios - Braintree - 插入式 UI - Apple Pay - Swift 3
- python-3.x - 使用python的.off文件上的最短路径长度
- c++ - 没有运算符“==”可以处理这些操作数