gpt4 book ai didi

java - Android 应用程序类全局实例或静态

转载 作者:行者123 更新时间:2023-11-29 22:21:42 25 4
gpt4 key购买 nike

我正在使用 android.app.Application 类(一个子类)来存储一些“全局”信息。一个例子是我们上次从 GPS/wifi 抓取的用户位置。我的问题是我是否应该将这些“全局”存储为静态变量或实例变量。不确定哪种情况更好或更正确。

场景A:使用静态变量--

public class MyApplication extends android.app.Application {

private static Location myLocation;
public static Location getLocation() {
return myLocation;
}
public static void setLocation(Location loc) {
myLocation = loc;
}
}

场景A:用法--

loc = MyApplication.getLocation();
MyApplication.setLocation(loc);

场景 B:使用实例变量 --

public class MyApplication extends Application {

private Location myLocation;
public Location getLocation() {
return this.myLocation;
}
public void setLocation(Location loc) {
this.myLocation = loc;
}
}

场景 B:用法 --

loc = getApplication().getLocation();
getApplication().setLocation(loc);

谢谢。

最佳答案

使用 Static 变量始终是正确的方法,因为它是您希望在任何地方都保持的单一状态。但是,当您拥有 java 提供的类似 SharedPreference() 的东西时,为什么要冒险,它更安全,您始终可以确定。并在您的应用程序中随处获取它。通常维护变量状态是一项冒险的任务。

使用实例变量维护状态的问题

实例变量对于您创建的不同对象/实例是不同的(因此它们被称为实例变量)所以如果尝试通过创建一个新对象来获取变量的值,它会返回一些您不想要的东西(因为它是在另一个实例中设置),就好像你使用 static variable 每个实例/对象都引用相同的变量(我的意思是说相同的内存位置)所以任何实例所做的任何更改都会反射(reflect)出来应用程序,与您访问它的方式无关。

关于java - Android 应用程序类全局实例或静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7008253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com