Java android中的上下文内存泄漏
我在开发者博客上读到了关于上下文内存泄漏的内容 但我不确定我是否理解它 方法Java android中的上下文内存泄漏,java,android,memory-leaks,Java,Android,Memory Leaks,我在开发者博客上读到了关于上下文内存泄漏的内容 但我不确定我是否理解它 方法getAppVersion是否会因为上下文引用而导致内存泄漏 public class A { public static int getAppVersion(Context context) { try { PackageInfo packageInfo = context.getPackageManager() .getPackage
getAppVersion
是否会因为上下文引用而导致内存泄漏
public class A
{
public static int getAppVersion(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionCode;
} catch (NameNotFoundException e) {
// should never happen
throw new RuntimeException("Could not get package name: " + e);
}
}
}
public class B extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.b);
int version = A.getAppVersion(this);
}
}
不,如果在静态字段中保存活动上下文,则可能发生内存泄漏。在您的情况下,您不会这样做。并且
getAppVersion
仅在执行方法时保存对上下文的引用。之后,它被删除,不再“活”了。只要避免在上下文本身之外保存任何绑定到上下文的Android组件。你必须明白Android中几乎所有的东西都是可以管理的,所以不要对任何你不能100%确定的东西做任何假设。经验法则基本上是,你要呆在Android的生命周期内,并将你自己的变量范围与之匹配。