静态变量Vs应用程序变量

时间:2012-06-01 04:40:13

标签: java android

我只是想看看你们可能会想到在Android开发方面的差异(在使用,效率,甚至良好实践方面)。

如果我在我的一个基本活动中使用静态变量(所以它的单个实例并且可以随处访问),而不是在我的应用程序子类中使用非静态变量(这是所有活动的单个应用程序类)

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

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

任何帮助澄清最佳方法?

2 个答案:

答案 0 :(得分:3)

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

android:process

由于某种原因,在您的Activity或您的清单文件中的任何其他内容中,您的静态值将被重置,您将获得分配给静态变量的初始值。在这种情况下,您可以使用SharedPreferenceApplication类。

因为如果你对任何特定的Activity使用android:process,那么该Activity将在另一个进程中运行,因为我们知道在Android中每个应用程序都在自己的进程中运行。

除此之外,我没有看到使用静电有太多问题。但是,我个人更喜欢Application类,因为Android有全局变量。

答案 1 :(得分:1)

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

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

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

这两个变量之间的主要区别之一是,当您调用System.gc();时,您的实例变量在static variable will never set to null by calling gc时设置为null。