使用InstantSearch时出现MemoryLeak-Android

MemoryLeak appears when using InstantSearch-Android

当我使用 InstantSearch Android 时,出现内存泄漏。

查看下面的 MainActivity 内存泄漏... hprof 表明这是 com.algolia.instantsearch.ui.views.Hits 的问题。有人知道如何在 Activity 被销毁时销毁该视图吗?

public class MainActivity extends AppCompatActivity {
    private Searcher searcher;
    InstantSearch helper;

    Hits hits;

    LinearLayout activity_main;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        hits= (Hits) findViewById(R.id.hits);
        activity_main= (LinearLayout) findViewById(R.id.activity_main);

        searcher = Searcher.create("app_id","secret_key","Items");
        helper = new InstantSearch(this, searcher);
        helper.search();
    }

    @Override
    protected void onDestroy() {
        searcher=null;

        helper=null;
        hits.clear();

        hits.removeAllViewsInLayout();
        hits.removeAllViews();
        hits.destroyDrawingCache();
        hits.setBackground(null);
        hits.setBackgroundResource(0);
        hits=null;

        activity_main.removeAllViewsInLayout();
        activity_main.removeAllViews();
        activity_main.destroyDrawingCache();
        activity_main.setBackground(null);
        activity_main.setBackgroundResource(0);
        activity_main=null;
        Log.i("AppInfo","Destroy");
        super.onDestroy();
    }
}

这是我的 activity_main.xml:

<LinearLayout
android:id="@+id/activity_main"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white"
xmlns:algolia="http://schemas.android.com/apk/res-auto">


<com.algolia.instantsearch.ui.views.Hits
    android:id="@+id/hits"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    algolia:itemLayout="@layout/hits_item"
    algolia:autoHideKeyboard="true"
    algolia:hitsPerPage="20"/>

这是我的 hits_item.xml:

<layout xmlns:algolia="http://schemas.android.com/apk/res-auto">

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/profImg"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:src="@drawable/placeholder_video"
            algolia:attribute='@{"profilePic"}'/>

    <TextView
        android:id="@+id/hit_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        algolia:attribute='@{"name"}'
        algolia:highlighted='@{true}'/>

 </RelativeLayout>

我们刚刚发布了一个修复程序。如果您更新到 1.1.4,您现在可以解决这个问题。只需添加您的 activity 的 onDestroy 以下代码:

@Override
protected void onDestroy() {
    // ... your code ...
    searcher.destroy(); // This will clean and release different listeners 
    super.onDestroy();
}

可以看到here