Fix fragment lifecyle in legal credit screen
WebView was being created everytime onCreateView was called
on LegalPreviewFragment. The Webiew was never destroyed which
would cause a leak.Fixed to create LegalPreviewFragment only once
for the activity.
Change-Id: I34361171192d3e262a08929c066443c09dbed8ef
diff --git a/src/com/android/browser/preferences/LegalPreviewActivity.java b/src/com/android/browser/preferences/LegalPreviewActivity.java
index eeaf558..4ca9d63 100644
--- a/src/com/android/browser/preferences/LegalPreviewActivity.java
+++ b/src/com/android/browser/preferences/LegalPreviewActivity.java
@@ -53,16 +53,22 @@
bar.setTitle(R.string.swe_open_source_licenses);
bar.setDisplayHomeAsUpEnabled(true);
}
- FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
- mLegalPreviewFragment = new LegalPreviewFragment();
- Bundle args = new Bundle();
- args.putString(URL_INTENT_EXTRA, getIntent().getExtras()
+ if (savedInstanceState == null) {
+ FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
+ mLegalPreviewFragment = new LegalPreviewFragment();
+ Bundle args = new Bundle();
+ args.putString(URL_INTENT_EXTRA, getIntent().getExtras()
.getString(URL_INTENT_EXTRA));
- mLegalPreviewFragment.setArguments(args);
- fragmentTransaction.add(R.id.license_layout, mLegalPreviewFragment,
+ mLegalPreviewFragment.setArguments(args);
+ fragmentTransaction.add(R.id.license_layout, mLegalPreviewFragment,
"LegalPreviewFragmentTag");
- fragmentTransaction.addToBackStack(null);
- fragmentTransaction.commit();
+ fragmentTransaction.addToBackStack(null);
+ fragmentTransaction.commit();
+ } else {
+ mLegalPreviewFragment =
+ (LegalPreviewFragment) getFragmentManager().findFragmentByTag(
+ "LegalPreviewFragmentTag");
+ }
}
private boolean back() {
diff --git a/src/com/android/browser/preferences/LegalPreviewFragment.java b/src/com/android/browser/preferences/LegalPreviewFragment.java
index ec60e10..515236b 100644
--- a/src/com/android/browser/preferences/LegalPreviewFragment.java
+++ b/src/com/android/browser/preferences/LegalPreviewFragment.java
@@ -51,6 +51,7 @@
super.onCreate(savedInstanceState);
Bundle args = getArguments();
mUrl = args.getString(LegalPreviewActivity.URL_INTENT_EXTRA);
+ mWebView = new WebView(getActivity());
}
@Override
@@ -61,16 +62,22 @@
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT);
- mWebView = new WebView(getActivity());
contentContainer.addView(mWebView.getView(), params);
return contentContainer;
}
@Override
+ public void onDestroy() {
+ super.onDestroy();
+ mWebView.destroy();
+ mWebView = null;
+ }
+
+ @Override
public void onActivityCreated(Bundle b) {
super.onActivityCreated(b);
if (mWebView == null) return;
- mWebView.loadUrl(mUrl);
+ mWebView.loadUrl(mUrl);
}
public boolean onBackPressed() {