【问题标题】:Static variable loses value静态变量失去价值
【发布时间】:2011-12-19 15:53:08
【问题描述】:

我遇到了一个关于我在整个项目中使用的静态变量的问题(它包含文件中的一些字段)。在某些情况下,变量会失去她的价值,但并非总是如此。 我读过一个静态变量的生命周期,她在 3 种情况下失去了价值:

1) 类已卸载。

2) JVM 关闭。

3) 进程终止。

所以我有一个问题:重写活动 onResume 并再次解析文件并再次输入静态变量是否足够?

【问题讨论】:

  • 贴出你试过的相关代码。
  • 感谢您的回答,但对于应用程序,当应用程序进入后台时,我似乎失去了我的价值观......

标签: android


【解决方案1】:

如果您真的必须使用静态/全局变量,请将它们放入扩展 Application 的自定义类中。像这样:

public class FooApplication extends Application {
    protected Bar myBar;

    public Bar getBar() { return myBar; }
    public void setBar(Bar bar) { myBar = bar; }
    ...
}

声明您将通过清单使用自定义应用程序类。

<application
    android:icon="@drawable/ic_launcher_noteit1"
    android:label="@string/app_name" 
    android:theme="@style/App_Theme"
    android:name="FooApplication" 
    android:debuggable="true">

现在您可以使用(FooApplication) getApplication() 从任何活动中访问您的应用程序对象。请注意,这不是推荐的方法。推荐的方法是使用单例模式。

如果文件的解析是一项昂贵的操作,您可能不想在每个onResume 上解析它。相反,您可能要考虑使用onRetainNonConfigurationInstance()

【讨论】:

    【解决方案2】:

    您首先要确保自己不会无意中重置该变量。为此,您可能需要创建 getMyVariable()setMyVariable() 函数,将一些登录信息放入其中并使用它们,而不是直接访问变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多