【问题标题】:Static Way to get Context on Android - Is it safe?在 Android 上获取上下文的静态方式 - 安全吗?
【发布时间】:2012-06-24 18:40:52
【问题描述】:

我意识到有一种非常有趣的技术,可以轻松地在 Android 中获取 Context。

Static way to get 'Context' on Android?

不过,我也遇到过

Android : Static variable null on low memory

用于保存上下文的静态变量是否可能在内存不足时变为空?

【问题讨论】:

  • 第一个问题是为什么你想让它成为静态的,因为我们不喜欢静态......
  • @DheereshSingh 如果您阅读了第一个链接中的问题,您就会明白为什么我们需要它是静态的。一切都是为了方便。
  • “我意识到有一种非常有趣的技术,可以轻松地在 Android 中获取上下文。” ...意味着没有真正的问题只是为了?只有
  • @DheereshSingh 这是一个问题。假设您有 100 个非活动类。所有这些类都需要访问方法,这些方法需要 Context 作为参数。必须将 Context 传递给这 100 个非 Activity 类是很痛苦的。
  • 在这种情况下,只有当你从活动类调用所有这些函数时,如果函数是非静态的,我宁愿传递上下文,如果函数是静态的,我会传递构造函数,如果函数是静态的,我会传递上下文每个人都宁愿通过违反标准来抓住机会....

标签: android


【解决方案1】:

用于保存上下文的静态变量是否有可能在内存不足时变为空?

没有。

进程可能会被终止以释放内存,这会在您的代码下次运行时在其新进程中生成静态变量null

【讨论】:

  • 我可以知道为什么有些开发人员在第二个链接中遇到问题吗?如果我将静态变量放在Application 类范围内,并将静态变量放在Activity 类范围内,这有关系吗?
  • @YanChengCHEOK,第一个链接提供了一种在整个应用程序中检索“应用程序上下文”的便捷方法。在应用程序的整个生命周期中,应用程序上下文不是null ......所以这就是它在这种特殊情况下工作的原因。如果您需要存储持久数据,那么您不应该使用静态变量来这样做......您应该将其存储在某种数据库中。
  • 子类化Application 以保持对全局静态变量的引用是可以的,因为Application 类也存在于整个应用程序的生命周期中。尽管如此,您也不应该将其用作存储持久数据的方法。
  • @YanChengCHEOK:“我可以知道为什么有些开发人员在第二个链接中遇到问题吗?” - 正如我在回答中概述的那样,他们的流程已终止。 “如果我将静态变量放在 Application 类范围内,并将静态变量放在 Activity 类范围内,这有关系吗?” -- staticstatic,不管你放在哪里。
猜你喜欢
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多