请澄清下面列出的代码是否会导致上下文内存泄漏?感谢
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);
}
}
简短的答案是否定的。您需要注意的是对活动销毁后保留的上下文/活动的引用。设备旋转是导致当前活动被Android破坏的一个操作示例。
在这种情况下,您的活动是唯一一个拥有对您的助手类的引用的东西。因此,当活动被销毁时,将不再有现有的引用。
但是,如果您的活动类将对帮助程序的引用定义为静态,那么这将导致内存泄漏。即使在活动实例被销毁之后,静态引用仍将保留。helper类保存对活动的引用,从而防止对活动实例进行垃圾收集。