Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android中的上下文内存泄漏_Java_Android_Memory Leaks - Fatal编程技术网

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的生命周期内,并将你自己的变量范围与之匹配。