当前位置: 首页 > 知识库问答 >
问题:

将数据保存在静态变量中是不好的做法吗?

水昊阳
2023-03-14
  1. 应用数据。当应用程序运行时,将应用程序数据保存在类中的静态变量中是不好的吗?目前,我将数据存储在application类中的一个实例变量中。然后,需要数据的类可以从应用程序.
  2. 获得数据
  3. 上下文等等,在静态字段中存储上下文(例如对活动应用程序的引用)是不是很糟糕?这可以用于需要layoutflater或资源的类中。目前,我正在将上下文传递给需要它们作为参数的方法。

共有1个答案

谷泽宇
2023-03-14

是的是的。:)

静态场。静态字段的过度使用会带来很多问题。它们不仅访问速度慢得很有趣,而且很容易在一夜之间被Android破坏,而且到处检查它们的引用或者在getter/setter中填充if(sSomeStatic==null){return new SomeStatic()}通常都是很麻烦的。存储对一个类的静态引用(例如)ApplicationData是可以的,在这个类中存储一些值,嘿,我们时不时地需要一些全局值,但它很容易被滥用,以至于每次我检查新的Android开发人员的源代码时我都会皱眉。

是的,将应用程序实例存储在单例模式中并使用它,但不要仅仅因为可以执行YourApp.getInstance().SomelazyValueYouaddedHere();就向应用程序实现添加200个静态字段

public class YourApp extends Application {
   private static YourApp sInstance;
   public YourApp() {
      super();
      sInstance = this;
   }
   public static YourApp getInstance() {
      return sInstance;
   }
}
 类似资料:
  • 问题内容: 在Android应用程序中,在这种情况下将对象存储在静态字段中是一种不好的做法吗? 应用程序数据。 在应用程序运行时将应用程序数据保留在类中的静态变量中是否不好?当前,我将数据存储在类的实例变量中。然后,需要数据的类可以从中获取数据。 的等。在静态字段中存储(例如,对或的引用)是不好的做法吗?可以在需要例如资源的类中使用它。目前,我正在将s 传递给需要它们作为参数的方法。 问题答案:

  • 问题内容: 我习惯在所有程序中广泛使用 静态变量 ,尤其是在使用Android时。我倾向于使用它们,因为有时 通过Intents发送10个或更多的值 会很 麻烦 。因此,我只是将 它们声明为静态 变量,并通过使用“点”运算符轻松地在其他类中访问它们。使用静态变量的另一个原因是当我要在整个应用程序中使用 Utility类时 。就像我在下面给出的代码一样,它可以帮助我 在不同的活动中使用变量 。 Ut

  • 问题内容: 例如: 这些变量将在Java,堆或堆栈存储器中存储在哪里?它们如何存储? 问题答案: 静态方法(实际上是所有方法)以及静态变量都存储在PermGen堆的部分中,因为它们是反射数据(与类相关的数据,而不与实例相关的数据)的一部分。 更新说明: 请注意,只有变量及其技术值(原始或引用)存储在空间中。 如果你的静态变量是对对象的引用,则对象本身存储在堆的常规部分(青年/旧世代或幸存者空间)中

  • Swift中的静态变量是如何存储的? > 如果我从未调用func usesticvar(),会发生什么?这些变量是否已初始化? 如果我调用useStaticVar()然后再也不访问它们,会发生什么?应收账

  • 我用动物代替了我真正的代码,所以这可能看起来有点傻,但这是一个真正的问题。 我的java程序得到一个不同动物的列表,一次遍历一个动物,对每个动物做以下事情:动物被创建,动物做一些随机运动,每个运动被计数,然后程序收集运动数据,做一些分析,并继续到列表中的下一个动物。 我有一个抽象的动物类,由不同的动物对象扩展,狗,猫等等。每个都有自己的动作。在基础动物类中,有一个散列表计算动物的随机运动。 upd

  • 问题内容: 假设以下内容: parsedUntil是否被视为静态变量?我注意到我无法在此静态函数中将其声明为静态。 后续问题:我读到一个静态变量只会被初始化一次。这是否意味着我第一次调用函数A()时,该值将设置为零,但是每隔一次我调用A()时,该行将被省略吗? 问题答案: 不,它不是静态变量。这是一个局部变量。方法中声明的任何变量都是局部变量。如果需要静态变量,则必须在方法外声明它: 没有办法声明