如何在安卓中创建全局变量?更新

在我的Android应用程序中,我需要一个地方来放置变量成员id。问题是,它是从在线API获取的,我需要找到一种方法来存储/检索它

我试图把它放在一个 自定义类 ,但问题是,如果我杀死活动,它会丢失,我也知道有一种方法可以扩展应用程序。

所以我想知道存储全局变量的最佳方法是什么?

我必须强调:

  1. 将变量保存在 onSaveState 上
  2. 将其保存在 sharepref 上
  3. 手动保存
  4. 手动检索

谢谢

更新:感谢您的回复。如果我只有3个变量(简单数据,例如布尔值,短语),并且在应用程序重新启动后需要它,我应该简单地使用share pref来存储它吗?它的缺点是什么?例如,它会对性能有害吗?谢谢


答案 1

您可以通过在扩展类的类中声明全局变量来在 android 中创建全局变量。Application

像这样的东西。

class MyAppApplication extends Application {

    private String mGlobalVarValue;

    public String getGlobalVarValue() {
        return mGlobalVarValue;
    }

    public void setGlobalVarValue(String str) {
        mGlobalVarValue = str;
    }
}

主要活动.java

class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle b){
        ...
        MyAppApplication mApp = ((MyAppApplication)getApplicationContext());
        String globalVarValue = mApp.getGlobalVarValue();
        ...
    }
}

更新

这将保留该值,直到您的应用程序未被销毁。如果您希望在应用程序实例销毁后仍保存值,则可以使用最佳方法来执行此操作。SharedPreferences

从这里了解 : http://developer.android.com/reference/android/content/SharedPreferences.htmlSharedPrefernces


答案 2
  • 如果您需要一个全局变量,该变量在多个活动之间共享,并在其生命周期更改中幸存下来,但除此之外不会持久存在,并且在应用程序重新启动后也无法生存,则第一个答案中建议的方法(扩展并放置它)是可以的。Application
  • 如果需要持久化全局设置(该设置也应该在应用程序重新启动后继续存在),则应使用建议的其他方法之一。 可能是最容易使用的。SharedPreferences

另请参阅此堆栈溢出问题:在活动之间共享数据的最佳方式是什么?