我只是想看看你们对 android 开发的不同看法(在使用、效率甚至良好实践方面)。
如果我在我的一个基本活动中使用静态变量(因此它的单个实例并且可以在任何地方访问),而不是在我的应用程序子类中使用非静态变量(这是所有活动的单个应用程序类)。
如果您尝试使用全局变量,两者都将获得相同的最终结果。
我使用的是静态的,然后我转而使用应用程序子类(如果你们想知道“我在用它做什么”,我想播放背景音乐并从任何地方控制它,我不想使用服务出于某些原因)。
任何帮助澄清最好的方法?
这也取决于使用情况,假设您正在使用
android:process
出于某种原因,在您Activity
或您的清单文件中的任何其他内容中,您的静态值将被重置,您将获得分配给静态变量的初始值。在这种情况下,您可以使用SharedPreference
或Application
上课。
因为如果您android:process
用于任何特定的 Activity,那么该 Activity 将在另一个进程中运行,并且我们知道在 Android 中每个应用程序都在其自己的进程中运行。
除此之外,我认为使用静态没有太多问题。但是,我个人更喜欢Application
类,因为 Android 将它用于全局变量。
在程序执行期间,每个变量都有自己的访问时间。这称为变量的生命周期。
实例变量: 实例变量是类成员。每次从类创建对象时,都会为该对象创建这些实例变量的全新副本。实际上,从一个类创建一个对象,部分地意味着为该对象创建实例变量的副本。因此,每个对象都有自己的实例变量副本,只要它们所属的对象存在,这些实例变量就存在。这些变量的值构成了我们所说的:对象的状态。
静态变量: 静态变量也是类的成员,但不能属于从该类创建的任何对象。因此,从类中创建的对象不会获得自己的静态变量副本。因此,静态变量仅在运行时加载类时创建。静态变量的存在只依赖于类本身。因此,只要其类存在,静态变量就存在。
这两个变量之间的主要区别之一是,当您调用实例变量时,System.gc();
您的实例变量设置为 null,而静态变量永远不会通过调用 gc 设置为 null。