繁体   English   中英

为什么在android Listeners上使用WeakReference?

[英]why use WeakReference on android Listeners?

我正在开发一个大型代码库,并在很多地方看到这种类型的代码:

public static class RequestCustomData implements View.OnClickListener {
    WeakReference<MainActivity> mainActivity;

    public RequestCustomData(MainActivity activity) {
        mainActivity = new WeakReference<>(activity);
    }

    @Override
    public void onClick(View view) {
        MainActivity activity = mainActivity.get();
        activity.requestCustomData(true, null);
    }
}

我有点困惑为什么这个用的是这么多地方? 我看了一下这个文档,但它没有说明为什么这类代码在我正在使用它的应用程序上如此频繁地使用

https://community.oracle.com/blogs/enicholas/2006/05/04/understanding-weak-references

如果这是一种常见模式,任何人都可以解释我吗? 如果是这样,为什么?

简单地说,弱引用是一个不足以强迫对象保留在内存中的引用。

如果RequestCustomData对象可以比活动本身更长,那么此代码的作者很可能希望避免泄露Activity上下文。

我推荐Romain Guy关于这个主题的帖子以及几个要避免的具体案例:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM