【问题标题】:Alternatives to static variables in AndroidAndroid 中静态变量的替代方案
【发布时间】:2010-06-17 18:35:31
【问题描述】:

我正在使用静态数组和 HashMaps 在我的 AppWidgetProvider 类中存储一些值。但是当进程终止时它们将变为空,因此小部件不再工作。在 Android 中,除了使用静态成员为 AppWidgetProvider 存储数据之外,还有其他选择吗?

【问题讨论】:

  • 进程关闭时使用成员变量并将数据存储在物理存储中?
  • 我如何知道进程何时关闭?另外,当您说物理存储时,您是指 ContentProviders 吗?

标签: java android static android-widget


【解决方案1】:

做你正在做的事情的“正确”方法(我相信)是 SharedPreferences。 Android 开发指南有一个很棒的页面,介绍了Data Storage in Android 的不同方法。另外,尽量不要使用太多的静态值;也许你正在做的事情会通过单例类更好地完成,但是,从问题来看,很难说出你在使用它们的目的。

【讨论】:

    【解决方案2】:

    您检查过类型化数组资源吗?

    Resource Types in the Android Dev Guide

    【讨论】:

    • 不幸的是 TypedArray 不允许在运行时存储值,这是我正在寻找的。​​span>
    • 如果您需要存储少量数据,我会使用 SharedPreferences,在应用程序上下文中运行的任何内容都将能够访问所选信息...如果您需要更多存储空间那,我会考虑使用 Sqlite 数据库并将您的信息存储在表中,但这可能很重。通过使用 SharedPreferences,您可以存储一个众所周知的格式化字符串,或者可能是 JSONObject/JSONArray 的等效字符串,然后您可以使用 JSONObject/JSONArray 对象将数据解析回供应用使用的内容。
    【解决方案3】:

    您可以将对象写入文件。定义类并在运行时用所需的值填充它,使用 objectwriter 保存它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      相关资源
      最近更新 更多