diff options
author | Vivek Sekhar <vsekhar@codeaurora.org> | 2015-12-15 17:39:21 -0800 |
---|---|---|
committer | jrizzoli <joey@cyanogenmoditalia.it> | 2016-01-11 22:03:23 +0100 |
commit | 2b31026b6a6067cdebd37e9a3e66b602d54c1e34 (patch) | |
tree | 9b4625ec47d5630ab03ed4756ff389b7ba4b6119 | |
parent | 56fc4195f8d9647e8b23a23fbb08c26f31bbf970 (diff) | |
download | android_packages_apps_Gello-2b31026b6a6067cdebd37e9a3e66b602d54c1e34.tar.gz android_packages_apps_Gello-2b31026b6a6067cdebd37e9a3e66b602d54c1e34.tar.bz2 android_packages_apps_Gello-2b31026b6a6067cdebd37e9a3e66b602d54c1e34.zip |
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
-rw-r--r-- | src/com/android/browser/preferences/LegalPreviewActivity.java | 22 | ||||
-rw-r--r-- | src/com/android/browser/preferences/LegalPreviewFragment.java | 11 |
2 files changed, 23 insertions, 10 deletions
diff --git a/src/com/android/browser/preferences/LegalPreviewActivity.java b/src/com/android/browser/preferences/LegalPreviewActivity.java index eeaf5589..4ca9d638 100644 --- a/src/com/android/browser/preferences/LegalPreviewActivity.java +++ b/src/com/android/browser/preferences/LegalPreviewActivity.java @@ -53,16 +53,22 @@ public class LegalPreviewActivity extends FragmentActivity { 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 ec60e10c..515236b6 100644 --- a/src/com/android/browser/preferences/LegalPreviewFragment.java +++ b/src/com/android/browser/preferences/LegalPreviewFragment.java @@ -51,6 +51,7 @@ public class LegalPreviewFragment extends Fragment { super.onCreate(savedInstanceState); Bundle args = getArguments(); mUrl = args.getString(LegalPreviewActivity.URL_INTENT_EXTRA); + mWebView = new WebView(getActivity()); } @Override @@ -61,16 +62,22 @@ public class LegalPreviewFragment extends Fragment { 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() { |