From: Alan Newberger Date: Fri, 24 Jul 2015 17:47:55 +0000 (-0700) Subject: Protect against destroying uncreated values X-Git-Tag: android-x86-6.0-r3~3^2^2~4 X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fpackages-apps-Camera2.git;a=commitdiff_plain;h=4df3011e2f3680a80ecc89c817ba528b2a578f0f Protect against destroying uncreated values Though we attempt to minimize lifecycle impact by exiting onCreate early due to inadequate permissions, we need to protect against touching fields in onDestroy that we did not initialize in onCreate. BUG=22718094 Change-Id: I49adcbbed005c4efa785458aa398e61488cfceb0 --- diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 3997705b3..bf4889873 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -2169,16 +2169,26 @@ public class CameraActivity extends QuickActivity mCameraController.removeCallbackReceiver(); mCameraController.setCameraExceptionHandler(null); } - getContentResolver().unregisterContentObserver(mLocalImagesObserver); - getContentResolver().unregisterContentObserver(mLocalVideosObserver); + if (mLocalImagesObserver != null) { + getContentResolver().unregisterContentObserver(mLocalImagesObserver); + } + if (mLocalVideosObserver != null) { + getContentResolver().unregisterContentObserver(mLocalVideosObserver); + } getServices().getCaptureSessionManager().removeSessionListener(mSessionListener); - mCameraAppUI.onDestroy(); - mModeListView.setVisibilityChangedListener(null); + if (mCameraAppUI != null) { + mCameraAppUI.onDestroy(); + } + if (mModeListView != null) { + mModeListView.setVisibilityChangedListener(null); + } mCameraController = null; mSettingsManager = null; mOrientationManager = null; mButtonManager = null; - mSoundPlayer.release(); + if (mSoundPlayer != null) { + mSoundPlayer.release(); + } CameraAgentFactory.recycle(CameraAgentFactory.CameraApi.API_1); CameraAgentFactory.recycle(CameraAgentFactory.CameraApi.AUTO); }