当我使用 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>