为什么使用WeakReference Android侦听器?

我正在处理一个大的代码库,并在许多地方看到这种类型的代码
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

任何人都可以解释一下这是一个常见的模式吗?如果是,为什么?

解决方法

A weak reference,simply put,is a reference that isn’t strong enough
to force an object to remain in memory.

如果RequestCustomData对象可能超过Activity本身,则此代码的作者最有可能希望避免泄露Activity上下文.

我建议Romain Guy’s post on this topic以及几个具体的情况来避免:

> inner classes and leaks
> threads and leaks

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...