Prevent memory leak when switching tabs

Set adapter will register RecyclerView as observer, which creates loop
references. By setting adapter to null, it will break the loop and have
ViewHolders get recycled on fragment destory view.

Bug: 170610268
Test: run memory profiler when switch tabs
Change-Id: Ice3abe8b3bcfaaac1f052a51283dffefef469ffb
diff --git a/src/com/android/car/dialer/ui/common/DialerListBaseFragment.java b/src/com/android/car/dialer/ui/common/DialerListBaseFragment.java
index 492d3f0..df21cde 100644
--- a/src/com/android/car/dialer/ui/common/DialerListBaseFragment.java
+++ b/src/com/android/car/dialer/ui/common/DialerListBaseFragment.java
@@ -142,4 +142,12 @@
                 mRecyclerView.getPaddingEnd(),
                 mRecyclerView.getPaddingBottom());
     }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        mRecyclerView.setAdapter(null);
+        mRecyclerView.setLayoutManager(null);
+        mRecyclerView = null;
+    }
 }
diff --git a/src/com/android/car/dialer/ui/search/ContactResultsFragment.java b/src/com/android/car/dialer/ui/search/ContactResultsFragment.java
index 1a44217..b392f97 100644
--- a/src/com/android/car/dialer/ui/search/ContactResultsFragment.java
+++ b/src/com/android/car/dialer/ui/search/ContactResultsFragment.java
@@ -122,9 +122,9 @@
 
     @Override
     public void onDestroyView() {
-        super.onDestroyView();
         getRecyclerView().removeOnScrollListener(mOnScrollChangeListener);
         mToolbar.unregisterOnSearchListener(this);
+        super.onDestroyView();
     }
 
     @Override