Android 弱引用

Android WeakReference

我有一个 activity 我必须从一个地方触发以放置一个自定义弹出对话框,它也是一个单例

从我的 activity 打开弹出窗口:

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

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

   Context mContext = nContext.get();

2) 将两者都保留为弱引用,仅在我需要时使用:

nContext.get();

这与泄漏有关error/warnings

谢谢

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

定义全局class变量:-

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

您必须将它们保留为弱引用,否则垃圾收集器会发现存在对该对象的强引用而不会收集它们,从而导致您提到的泄漏。