如何在android中创建一个全局变量?

use*_*104 12 java variables android class global-variables

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

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

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

我必须要实施:

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

谢谢

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

Aja*_*y S 26

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

像这样的东西.

class MyAppApplication extends Application {

    private String mGlobalVarValue;

    public String getGlobalVarValue() {
        return mGlobalVarValue;
    }

    public void setGlobalVarValue(String str) {
        mGlobalVarValue = str;
    }
}
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

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

更新

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

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


小智 6

  • 如果您需要一个全局变量,该变量在多个活动之间共享并且在其生命周期更改后仍然存在,但是否则不会持久存在且无法在应用程序重新启动后继续存在,第一个答案(扩展Application并将其放在那里)中建议的方法就可以了.
  • 如果您需要持久化的全局设置(应该在应用程序重新启动后仍然存在),那么您应该使用建议的其他方法之一.SharedPreferences可能是最容易使用的.

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