Android上下文内存通过活动私有成员泄漏

时间:2013-12-01 17:44:02

标签: android memory-leaks

请澄清下面列出的代码是否会导致上下文内存泄漏?感谢

public class HelperClass {
     private Context context;

     public HelperClass(Context context) {
        this.context = context;
     }
     public void myHelperMethod() {
    // uses this.context
    }
}

public class MyActivity extends Activity {
    private HelperClass helper;

    public void onCreate(Bundle savedInstanceState) {
         helper = new HelperClass(this);
    }
}

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的。您要注意的是对活动销毁后剩余的上下文/活动的引用。设备轮换是导致当前活动被Android销毁的操作示例。

在这种情况下,您的活动是唯一拥有对您的帮助程序类的引用的东西。因此,当活动被销毁时,将不再有现有的引用。

但是,如果您的活动类将对助手的引用定义为静态,那么这将导致内存泄漏。即使在活动实例被销毁之后,静态引用仍将保留。保存对活动的引用的助手类将阻止活动实例被收集。