Java 扩展ImageView会导致内存泄漏

Java 扩展ImageView会导致内存泄漏,java,android,memory-leaks,imageview,Java,Android,Memory Leaks,Imageview,你好 我正在扩展ImageView类,因为我需要它是一个正方形,问题是它似乎导致内存泄漏,因为如果我使用未扩展的ImageView类,MAT中就没有输出。这是扩展版本,正如您所看到的,它非常简单: public class SquareImageView extends ImageView { public SquareImageView(Context context) { super(context); } public SquareImageVi

你好

我正在扩展
ImageView
类,因为我需要它是一个正方形,问题是它似乎导致内存泄漏,因为如果我使用未扩展的
ImageView
类,MAT中就没有输出。这是扩展版本,正如您所看到的,它非常简单:

public class SquareImageView extends ImageView {

    public SquareImageView(Context context) {
        super(context);
    }

    public SquareImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, widthMeasureSpec);
    }

}
我将它实现为一个
GridView
项,类似于:

<FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:foreground="@drawable/item_button">

    <com.gc.materialdesign.views.ProgressBarCircularIndeterminate
            android:id="@+id/progressBarCircularIndeterminate"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_gravity="center"
            android:background="@color/orange"/>

    <!-- if I use <ImageView/>, everything is ok -->
    <com.example.widgets.SquareImageView
            android:id="@+id/picture"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"/>

</FrameLayout>

这是我在打开和关闭包含gridview的片段10次后在柱状图中得到的结果,您可以看到保留的堆是巨大的,此时我已经强制GC:

包含10个保留对象中1个的传入引用的列表:

和gc根的路径(不包括弱引用):

我通过循环使用ImageView位图来减少保留的堆:


但我不明白为什么要保留这10个对象。正如我在开始时所说的,如果我使用
ImageView
而不是扩展的,那么根本就没有泄漏。如果您能给我一个提示,那就太好了。

在gc根路径(不包括弱引用)视图中,您的CardView有什么问题?有什么解决方案吗?