我有一个活动,我必须从一个地方触发一个自定义弹出对话框,这也是一个单身
从我的活动中打开弹出窗口:
ScheduleDialog.getInstance().refreshContent(new WeakReference<Context>(this), new WeakReference<ScheduleDialog.interface>(this));
什么是最好的? 1)创建2个本地引用(在ScheduleDialog中),如:
Context mContext = nContext.get();
2)保持两者都像弱参考,只有当我需要它们时才使用:
nContext.get();
这与泄漏错误/警告有关
由于
答案 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,否则垃圾收集器会看到对该对象的强引用并且不会收集它们,从而导致您提到的泄漏。