Android WeakReference

时间:2018-02-08 12:30:09

标签: android weak-references

我有一个活动,我必须从一个地方触发一个自定义弹出对话框,这也是一个单身

从我的活动中打开弹出窗口:

  ScheduleDialog.getInstance().refreshContent(new WeakReference<Context>(this), new WeakReference<ScheduleDialog.interface>(this));

什么是最好的? 1)创建2个本地引用(在ScheduleDialog中),如:

   Context mContext = nContext.get();

2)保持两者都像弱参考,只有当我需要它们时才使用:

nContext.get();

这与泄漏错误/警告有关

由于

2 个答案:

答案 0 :(得分:0)

如果我看到您的代码,则在Context nContext变量中获取弱参考值后再次创建强引用。因此,如果要实现弱参考概念,需要遵循以下流程: -

定义全局类变量: -

private final WeakReference< Context > nContext;

通过从另一个区域传递来设置全局变量中的值

nContext = new WeakReference<Context>(nContext);

然后

if (nContext.get() != null) 
    // code
}

https://medium.com/google-developer-experts/weakreference-in-android-dd1e66b9be9d

答案 1 :(得分:0)

您必须将它们保留为WeakReferences,否则垃圾收集器会看到对该对象的强引用并且不会收集它们,从而导致您提到的泄漏。