【发布时间】:2013-07-17 08:29:40
【问题描述】:
我想知道一些基本的东西
我正在开发一个 android 应用程序,因此它导致我遇到内存管理问题。 最近看了一个google关于内存管理的视频,发现在activity中使用静态变量会导致内存泄漏,即使activity的方向改变,因为它保持对activity中其他对象的引用,视频中的人说使用借助静态方法的静态变量将解决问题,我想知道静态方法将如何解决问题?
我想知道在我的应用程序中使用静态变量的最佳方式,例如,我有一个全局类,其中存储了一些静态变量,因为它的名称表明这些值将由不同的活动评估和修改, 例如,我有一个静态变量 WIDTH,目前像这样更新它
Global.WIDTH = 12
或者像 int width = Global.WIDTH
来自不同的活动,这是一个正确的方法,还是我必须使用静态方法来获得宽度,如 int width = Global.getWidth();,那么这两者有什么区别,最好的方法是什么为此,
在处理静态变量时,我们还需要注意哪些其他重要事项?
谢谢大家,对冗长的描述感到抱歉...
【问题讨论】:
-
当字段/方法必须属于类而不属于任何对象引用时使用
static。如果在Activitys 中使用,我建议使用static final将该字段声明为常量,而不是在那里使用普通的野生static字段。 -
感谢您的快速回复.. 我不能将其声明为最终版本,因为它的值会根据计算根据设备而变化
-
您可以将其声明为
static final并在static{ }方法中定义值。请注意,即使这些值是动态的,它们应该只在您的应用程序启动时加载一次,而不是在应用程序的任何时候加载。如果您希望横向可视化具有不同的宽度和高度,请再添加两个字段,而不是重新计算值。 -
嗯.. 谢谢你这是个好主意。当我们直接从字段访问这些值并使用静态方法时,还有一件事在保留引用方面会有所不同
-
任何
static字段将保留在内存中,直到类被卸载,所以我想说只将static对象引用作为方法的局部变量或参数,不要使用它直接填写您的一个类的字段。
标签: java android performance static