【问题标题】:Using static methods/structures to pass data between activities使用静态方法/结构在活动之间传递数据
【发布时间】:2020-03-18 08:09:04
【问题描述】:

如果我想在同一个应用程序中的活动之间传递数据,a) 我可以使用 Intent 或 b) 使用数据库(传递 Intent 中的 id 而不是完整数据。
但我也可以使用 c) 具有静态数据结构的类,这两个活动都可以以存储/获取方式访问。
如果我不关心应用重启时数据的持久性,使用 (c) 有什么缺点?

【问题讨论】:

  • c选项是Repository模式的例子,repository是单例的。
  • @ManuelMato:我认为存储库模式意味着访问数据库(或远程服务器数据库)
  • 我使用存储库在更多数据源之间创建流数据并使用缓存数据源,但是如果您没有更多数据源,也许您可​​以在存储库类中完成所有操作
  • @ManuelMato:您的建议有助于如何正确设计代码。但问题是我们在活动生命周期中将数据存储在静态结构中所面临的潜在问题
  • 啊oki,我没看懂这个说法,抱歉xD

标签: java android android-intent android-activity android-lifecycle


【解决方案1】:

最大的缺点是 Android 操作系统可以随时终止您的进程。当流程重新创建时,Android 将重新创建您的所有活动以恢复其状态。

由于 Android 不知道应该如何处理您的静态数据,因此您将丢失它并且 Activity B 将处于不一致的状态。

我举个例子更清楚:

  1. 活动 A 启动
  2. 活动 A 上的按钮被点击
  3. 在启动 Activity B 之前填充静态数据结构
  4. Activity B 启动,可以访问静态数据
  5. Android 操作系统会自动终止您的进程
  6. 活动 A 和活动 B 已恢复
  7. 静态数据结构不会被填充,因为当点击 Activity A 上的按钮时它们会被填充
  8. 活动 B 处于不一致状态

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    相关资源
    最近更新 更多