📅  最后修改于: 2023-12-03 15:13:21.538000             🧑  作者: Mango
在Android编程中,全局变量是指在整个应用程序中都可以访问的变量。它们可以在应用程序的任何地方使用,无需重复定义。
在Android中定义全局变量有以下两种方法:
Android提供了一个名为Application的类,它是全局单例对象,可以在它里面定义全局变量,可以是基本类型,也可以是对象类型。实现方式如下:
public class MyApplication extends Application {
private static MyApplication instance;
private String globalString;
public static MyApplication getInstance() {
return instance;
}
public String getGlobalString() {
return globalString;
}
public void setGlobalString(String globalString) {
this.globalString = globalString;
}
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
}
上述代码中,我们创建了一个名为MyApplication的类,这个类继承了Application类,并创建了一个静态的全局单例对象instance,以供程序中任何地方访问。另外还定义了一个String类型的全局变量globalString,通过setGlobalString和getGlobalString方法来获取和设置这个变量的值。最后,在onCreate方法中初始化了全局单例对象instance。
需要注意的是,在AndroidManifest.xml中注册MyApplication:
<application
android:name=".MyApplication"
...
</application>
我们通常可以在一个静态类中定义全局变量,这样其他类也可以访问它。静态类主要有两个好处:一是我们不需要创建它的实例就可以调用它的方法和访问它的成员,二是它的生命周期与整个应用程序的生命周期相同。
public class Globals {
public static String globalString = "Hello World";
}
上述的代码就定义了一个名为Globals的静态类,并在其中定义了一个静态的String类型变量globalString,可以在程序的任何地方通过Globals.globalString的方式来访问它。
要使用在Application中定义的全局变量,我们只需要调用MyApplication.getInstance()方法即可,不需要创建它的实例。
String globalString = MyApplication.getInstance().getGlobalString();
MyApplication.getInstance().setGlobalString("New value");
而要使用在静态类中定义的全局变量,只需直接使用静态类名加变量名即可。
String globalString = Globals.globalString;
Globals.globalString = "New value";
注意:定义全局变量会增加内存消耗,因此需要谨慎使用。如果全局变量的值无法确定,最好不要将它们设为全局变量。