From 4df3011e2f3680a80ecc89c817ba528b2a578f0f Mon Sep 17 00:00:00 2001 From: Alan Newberger Date: Fri, 24 Jul 2015 10:47:55 -0700 Subject: 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 --- src/com/android/camera/CameraActivity.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) 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); } -- cgit v1.2.3