应用程序类变量在android中未初始化

时间:2014-06-05 12:58:00

标签: java android android-memory

我创建了一个Android应用程序,其中我使用应用程序类来存储和访问全局变量。但是我遇到了一个奇怪的行为,即我的应用程序类中的所有变量在以下场景中都未初始化,

  1. 如果我的应用程序闲置一段时间(比如10分钟左右)。
  2. 如果我的应用程序转到后台(如果浏览器在应用程序上方打开)。
  3. 我在SO和网络上搜索了很多,但没有找到合适的答案。 AFAIK一旦初始化了应用程序类,它将在应用程序的生命周期内可访问。我在这里错过了什么吗?

    由于我是Android开发的新手,我可能在这里做错了。谁能指出我正确的方向?...提前谢谢。

    public class MyApp extends Application {
    
    private MyClass classObj = new MyClass();
    private boolean flagOne = true;
    private boolean flagTwo = false;
    
    void setFlagOne(boolean flag) {
        flagOne = flag;
    }
    
    boolean getFlagOne() {
        return flagOne;
    }
    
    void setFlagTwo(boolean flag) {
        flagTwo = flag;
    }
    
    boolean getFlagTwo() {
        return flagTwo;
    }
    
    void setMyClassObj(MyClass obj) {
        classObj = obj;
    }
    
    boolean getMyClassObj() {
        return classObj;
    }
    }
    

1 个答案:

答案 0 :(得分:2)

最后,我通过使用共享首选项保存变量状态并将对象存储在应用程序文件目录中来解决它。因此,如果应用程序在任何时候重新创建(有时如果应用程序进入后台),我将恢复变量的状态并读回对象。因此,变量在某个时间点不会被初始化。

存储值

SharedPreferences pref = getSharedPreferences("appstate", Context.MODE_PRIVATE);
Editor editor = pref.edit();
editor.putBoolean("flagone", flagOne);
editor.putBoolean("flagtwo", flagTwo);

检索值,

SharedPreferences pref = getSharedPreferences("appstate", Context.MODE_PRIVATE);
flagOne = pref.getBoolean("flagone", true);
flagTwo = pref.getBoolean("flagtwo", false);