summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-06-03 21:15:52 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-06-03 21:15:52 +0000
commit1c22ed659590c7acc652a40b7224fae4271d383a (patch)
treef78610bb73299ed4ef790df82c8583ca4a7266c2
parentc61cd7c4886cd4aaf7199e130ed3ff066ae06307 (diff)
parent02d3d43d97a06b8066495de8eeb63a46ee98b7f2 (diff)
downloadandroid_packages_apps_Trebuchet-1c22ed659590c7acc652a40b7224fae4271d383a.tar.gz
android_packages_apps_Trebuchet-1c22ed659590c7acc652a40b7224fae4271d383a.tar.bz2
android_packages_apps_Trebuchet-1c22ed659590c7acc652a40b7224fae4271d383a.zip
Fixing memory leak in QSB widget
am: 02d3d43d97 * commit '02d3d43d97a06b8066495de8eeb63a46ee98b7f2': Fixing memory leak in QSB widget Change-Id: I62720392a36fc67aa399b862bd14e69db9e54e2f
-rw-r--r--res/layout/qsb_container.xml9
-rw-r--r--src/com/android/launcher3/QsbContainerView.java28
2 files changed, 18 insertions, 19 deletions
diff --git a/res/layout/qsb_container.xml b/res/layout/qsb_container.xml
index 3de28760f..55c7390d3 100644
--- a/res/layout/qsb_container.xml
+++ b/res/layout/qsb_container.xml
@@ -20,4 +20,11 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/qsb_container"
- android:padding="0dp" /> \ No newline at end of file
+ android:padding="0dp" >
+
+ <fragment
+ android:name="com.android.launcher3.QsbContainerView$QsbFragment"
+ android:layout_width="match_parent"
+ android:tag="qsb_view"
+ android:layout_height="match_parent"/>
+</com.android.launcher3.QsbContainerView> \ No newline at end of file
diff --git a/src/com/android/launcher3/QsbContainerView.java b/src/com/android/launcher3/QsbContainerView.java
index 0a112d23e..f931aba21 100644
--- a/src/com/android/launcher3/QsbContainerView.java
+++ b/src/com/android/launcher3/QsbContainerView.java
@@ -18,7 +18,6 @@ package com.android.launcher3;
import android.app.Activity;
import android.app.Fragment;
-import android.app.FragmentManager;
import android.app.SearchManager;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProviderInfo;
@@ -44,8 +43,6 @@ import com.android.launcher3.compat.AppWidgetManagerCompat;
*/
public class QsbContainerView extends FrameLayout {
- private boolean mBound;
-
public QsbContainerView(Context context) {
super(context);
}
@@ -59,17 +56,6 @@ public class QsbContainerView extends FrameLayout {
}
@Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
-
- if (!mBound) {
- FragmentManager fm = ((Launcher) getContext()).getFragmentManager();
- fm.beginTransaction().add(R.id.qsb_container, new QsbFragment()).commit();
- mBound = true;
- }
- }
-
- @Override
public void setPadding(int left, int top, int right, int bottom) {
super.setPadding(0, 0, 0, 0);
}
@@ -103,6 +89,8 @@ public class QsbContainerView extends FrameLayout {
getContext().registerReceiver(mRebindReceiver, filter);
}
+ private FrameLayout mWrapper;
+
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -110,7 +98,12 @@ public class QsbContainerView extends FrameLayout {
if (savedInstanceState != null) {
sSavedWidgetId = savedInstanceState.getInt(QSB_WIDGET_ID, -1);
}
+ mWrapper = new FrameLayout(getContext());
+ mWrapper.addView(createQsb(inflater, mWrapper));
+ return mWrapper;
+ }
+ private View createQsb(LayoutInflater inflater, ViewGroup container) {
Launcher launcher = (Launcher) getActivity();
mWidgetInfo = getSearchWidgetProvider(launcher);
if (mWidgetInfo == null) {
@@ -222,10 +215,9 @@ public class QsbContainerView extends FrameLayout {
}
private void rebindFragment() {
- if (getActivity() != null) {
- // Recreate the fragment. This will cause the qsb to be inflated again.
- getActivity().getFragmentManager().beginTransaction()
- .replace(R.id.qsb_container, new QsbFragment()).commit();
+ if (mWrapper != null && getActivity() != null) {
+ mWrapper.removeAllViews();
+ mWrapper.addView(createQsb(getActivity().getLayoutInflater(), mWrapper));
}
}