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

时间:2014-02-16 10:59:39

标签: java android class variables global-variables

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

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

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

我必须施展:

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

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

4 个答案:

答案 0 :(得分:26)

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

像这样。

class MyAppApplication extends Application {

    private String mGlobalVarValue;

    public String getGlobalVarValue() {
        return mGlobalVarValue;
    }

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

MainActivity.java

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

更新

这将保留该值,直到您的应用程序未被销毁。如果要在应用程序实例销毁后保留值,请保存 那么你可以使用SharedPreferences最好的方法来做到这一点。

从此处了解SharedPrefernceshttp://developer.android.com/reference/android/content/SharedPreferences.html

答案 1 :(得分:6)

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

另请参阅此Stack Overflow问题:What's the best way to share data between activities?

答案 2 :(得分:2)

您可以将其存储在SharedPreferences中,并创建一个sharedpreferenceHelper类来检索/存储它。

答案 3 :(得分:1)

最好通过以下方式之一多次存储您想要使用的值: -

  • 共享偏好设置
  • 单身人士课程
  • 将其写入文件
  • SQLite数据库
  • 存储在网络服务器上