当前位置: 首页 > 面试题库 >

在Android中使用静态变量

白腾
2023-03-14
问题内容

在android中,推荐使用静态变量吗?例如,用Java实现Singleton模式,我通常这样做:

private static A the_instance;
public static A getInstance() {
    if (the_instance == null) {
       the_instance = new A();
    }
    return the_instance;
}

此外,Android JVM何时可以清除此漏洞?


问题答案:

static字段会整体附加到Class实例,而实例又附加到ClassLoader加载了类的。the_instance整个ClassLoader回收时将被卸载。我90%确信这会在Android销毁该应用程序时发生(不是在它进入后台或暂停但完全关闭时发生)。

因此,只要你的应用程序运行,就可以将其视为生存。Singleton是个好主意吗?人们有不同的看法。我个人认为,适当使用它会很好。我认为答案在Android上不会有太大变化。内存使用本身不是问题。如果你需要在内存中加载一堆东西,无论你是否将数据封装在Singleton中,这要么是问题,要么不是问题。



 类似资料:
  • 当使用静态变量确保触发器只触发一次时,我们注意到测试类中的一些有趣行为。考虑以下触发器、类和testclass: 触发: 类: 测试类: 基于这一点,我期望100%的代码覆盖率,但当您运行这一行时,就会出现RecursiveClass。DostuffinUpdate();中,触发器将不会执行,因为静态变量似乎仍在设置中。根据我在文档中读到的内容,静态变量仅在整个事务中保存(即插入或更新)。测试类中

  • 问题内容: 我正在使用spring的PreAuthorize注释,如下所示: 但是,我已经在另一个类上将“角色”定义为静态字符串。如果我尝试使用此值: 我收到一个错误: 有没有办法使用PreAuthorize批注访问此类静态变量? 问题答案: 尝试以下使用Spring Expression Language评估类型的方法: 确保指定完全限定的类名。 文献资料

  • 我不知道什么时候在程序中使用一个静态/非静态变量。 我理解非静态/静态变量之间的区别,但我只是不知道何时使用每一个变量。那么在上面的代码中,为什么函数不能是静态的呢?(什么时候应该是静态的?)

  • 问题内容: 说我有两个这样的课程: 在两个实例都被多次实例化并且这两个类的实例的方法被大量调用的情况下,使用在A类中持有的静态变量而不是在其中使用任何 实际的 优点/缺点(时间,内存)在每个单独的实例中创建一个新对象,例如在类B中? 该应用程序是多线程的,并且具有更高的随机性,因此我认为我要使用static 。如果在分析后这将是一个真正的速度因素,我可能会选择其他东西。 问题答案: 实际的 优缺点

  • 问题内容: 我正在使用仅包含静态变量的类来存储所有常量和运行时属性。但是,最近我看到了引用这些变量的实例,但得到的却是null。 以下是我的课程定义: 我没有存储任何引用实例化PlayerProperties类,因为其中包含的所有变量都是静态的。 当我使用引用变量androidId时,我有时会得到null。 我已经在活动之一中初始化了变量: 我的怀疑是,垃圾收集器在两者之​​间被android踢了

  • 问题内容: 我已经定义了一个对象并声明了一个静态变量。在该方法中,当我尝试打印实例和类变量时,两者都打印相同的值。 不是实例变量吗?它应该打印0而不是50吗? 问题答案: 不,只有一个变量-您尚未声明任何实例变量。 不幸的是,Java允许您访问静态成员,就像通过相关类型的引用访问静态成员一样。这是IMO的设计缺陷,某些IDE(例如Eclipse)允许您将其标记为警告或错误- 但这是语言的一部分。您