Java 静态变量与应用程序变量

Java 静态变量与应用程序变量,java,android,Java,Android,我只是想看看你们对android开发的不同看法(在使用率、效率甚至是良好实践方面) 如果我在我的一个基本活动中使用一个静态变量(因此它的单个实例和每个地方都可以访问),而不是在我的应用程序子类中使用一个非静态变量(它是所有活动的一个应用程序类) 如果您尝试使用全局变量,则两者都将获得相同的最终结果 我使用的是静态的,然后我开始使用应用程序子类(如果你们想知道“我使用它是为了什么”,我想播放背景音乐并从任何地方控制它,出于某些原因,我不想使用该服务) 是否有助于澄清最佳方法?这也取决于使用情况,假

我只是想看看你们对android开发的不同看法(在使用率、效率甚至是良好实践方面)

如果我在我的一个基本活动中使用一个静态变量(因此它的单个实例和每个地方都可以访问),而不是在我的应用程序子类中使用一个非静态变量(它是所有活动的一个应用程序类)

如果您尝试使用全局变量,则两者都将获得相同的最终结果

我使用的是静态的,然后我开始使用应用程序子类(如果你们想知道“我使用它是为了什么”,我想播放背景音乐并从任何地方控制它,出于某些原因,我不想使用该服务)


是否有助于澄清最佳方法?

这也取决于使用情况,假设您正在使用

android:process
由于某种原因,在您的
活动
或清单文件中的任何其他内容中,您的静态值将被重置,并且您将获得分配给静态变量的初始值。在这种情况下,您可以使用
SharedReference
Application

因为如果您对任何特定活动使用
android:process
,那么该活动将在另一个进程中运行,正如我们所知,在android中,每个应用程序都在其自己的进程中运行


除此之外,我不认为使用static有什么问题。但是,就个人而言,我更喜欢
应用程序
类,因为Android对全局变量有它。

如果您使用

android:process
由于某种原因,在您的
活动
或清单文件中的任何其他内容中,您的静态值将被重置,并且您将获得分配给静态变量的初始值。在这种情况下,您可以使用
SharedReference
Application

因为如果您对任何特定活动使用
android:process
,那么该活动将在另一个进程中运行,正如我们所知,在android中,每个应用程序都在其自己的进程中运行


除此之外,我不认为使用static有什么问题。但是,就个人而言,我更喜欢
应用程序
类,因为Android对全局变量有它。

在程序执行期间,每个变量都有自己的访问时间。这称为变量的生存期

  • 实例变量: 实例变量是类成员。每次从类创建对象时,都会为此对象创建这些实例变量的全新副本。实际上,从类创建对象部分地意味着为该对象创建实例变量的副本。因此,每个对象都有自己的实例变量副本,只要它们所属的对象存在,实例变量就存在。这些变量的值构成了我们所说的:对象的状态

  • 静态变量: 静态变量也是类的成员,但不能属于从该类创建的任何对象。因此,从类中创建的对象不会获得它们自己的静态变量副本。因此,只有在运行时加载类时才会创建静态变量。静态变量的存在仅依赖于类本身。因此,静态变量只要其类存在就存在


这两个变量之间的主要区别之一是,当您调用
System.gc()时实例变量设置为null,而。

在程序执行过程中,每个变量都有自己的可访问时间。这称为变量的生存期

  • 实例变量: 实例变量是类成员。每次从类创建对象时,都会为此对象创建这些实例变量的全新副本。实际上,从类创建对象部分地意味着为该对象创建实例变量的副本。因此,每个对象都有自己的实例变量副本,只要它们所属的对象存在,实例变量就存在。这些变量的值构成了我们所说的:对象的状态

  • 静态变量: 静态变量也是类的成员,但不能属于从该类创建的任何对象。因此,从类中创建的对象不会获得它们自己的静态变量副本。因此,只有在运行时加载类时才会创建静态变量。静态变量的存在仅依赖于类本身。因此,静态变量只要其类存在就存在


这两个变量之间的主要区别之一是,当您调用
System.gc()时您的实例变量设置为null,而。

我想您可能需要阅读-我认为它回答了您的问题。如果您只使用一个静态变量,它的开销可能比单例类小,但实际上,在更大的范围内,它没有真正的区别,静态变量的存在是有原因的——如果使用得少,它们不是不好的做法。谢谢,但这回答了我是否应该使用静态变量。我的问题是,是使用静态子类还是应用程序子类,以及它们之间的区别是什么,因为它们都保存在内存中。我想你可能会想读一读,它回答了我的问题。如果您只使用一个静态变量,它的开销可能比单例类小,但实际上,在更大的范围内,它没有真正的区别,静态变量的存在是有原因的——如果使用得少,它们不是不好的做法。谢谢,但这回答了我是否应该使用静态变量。我的问题是,是使用静态还是应用程序子类,以及两者的区别是什么,因为它们都保存在内存中。静态变量贯穿程序的生命周期,所以静态值永远不会被重置。@Lucifer Android在我们