diff options
author | junjiez <junjiez@codeaurora.org> | 2016-09-07 11:27:18 +0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-09-14 17:22:52 -0700 |
commit | dbfa594f2b588c8b52e87eb5f90c0df05bde6a7e (patch) | |
tree | ad28d02c3985cca3b5452e443165a23eba18cd21 /src/com/android/camera | |
parent | e2c6bdcd24425d811cf98b967a09a42449967f56 (diff) | |
download | android_packages_apps_Snap-dbfa594f2b588c8b52e87eb5f90c0df05bde6a7e.tar.gz android_packages_apps_Snap-dbfa594f2b588c8b52e87eb5f90c0df05bde6a7e.tar.bz2 android_packages_apps_Snap-dbfa594f2b588c8b52e87eb5f90c0df05bde6a7e.zip |
SnapdragonCamera:Fix instance of SettingsManager is null
When there are two CameraActivities, one of them is destroyed,
the instance of settingsManager will be destroyed too. When the
other CameraActivity invokes SettingsManager.getInstance(), it may
return null and cause exceptions.Create and hold a instance of
SettingsManager in each CameraActivity to make sure it's not null.
Change-Id: Id2c355bf63f61e09f914113082db2876f28b9658
CRs-Fixed: 1060909
Diffstat (limited to 'src/com/android/camera')
-rw-r--r-- | src/com/android/camera/CameraActivity.java | 14 | ||||
-rw-r--r-- | src/com/android/camera/CaptureModule.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/CaptureUI.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/SettingsManager.java | 20 |
4 files changed, 11 insertions, 27 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index a808dbf60..6c2360d8a 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -235,6 +235,7 @@ public class CameraActivity extends Activity private Intent mPanoramaShareIntent; private LocalMediaObserver mLocalImagesObserver; private LocalMediaObserver mLocalVideosObserver; + private SettingsManager mSettingsManager; private final int DEFAULT_SYSTEM_UI_VISIBILITY = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; @@ -1435,7 +1436,7 @@ public class CameraActivity extends Activity getWindow().requestFeature(Window.FEATURE_ACTION_BAR); - SettingsManager.createInstance(this); + mSettingsManager = new SettingsManager(this); LayoutInflater inflater = getLayoutInflater(); View rootLayout = inflater.inflate(R.layout.camera, null, false); @@ -1472,7 +1473,7 @@ public class CameraActivity extends Activity } } - boolean cam2on = SettingsManager.getInstance().isCamera2On(); + boolean cam2on = mSettingsManager.isCamera2On(); if (cam2on && moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX) moduleIndex = ModuleSwitcher.CAPTURE_MODULE_INDEX; @@ -1775,9 +1776,8 @@ public class CameraActivity extends Activity mWakeLock.release(); Log.d(TAG, "wake lock release"); } - SettingsManager settingsMngr = SettingsManager.getInstance(); - if (settingsMngr != null) { - settingsMngr.destroyInstance(); + if (mSettingsManager != null) { + mSettingsManager = null; } if (mCursor != null) { getContentResolver().unregisterContentObserver(mLocalImagesObserver); @@ -1936,7 +1936,7 @@ public class CameraActivity extends Activity @Override public void onModuleSelected(int moduleIndex) { - boolean cam2on = SettingsManager.getInstance().isCamera2On(); + boolean cam2on = mSettingsManager.isCamera2On(); mForceReleaseCamera = cam2on && moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX; if (mForceReleaseCamera) { moduleIndex = ModuleSwitcher.CAPTURE_MODULE_INDEX; @@ -2246,4 +2246,6 @@ public class CameraActivity extends Activity public CameraModule getCurrentModule() { return mCurrentModule; } + + public SettingsManager getSettingsManager() {return mSettingsManager;} } diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 1a7811000..0ae9c5ef1 100644 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -902,7 +902,7 @@ public class CaptureModule implements CameraModule, PhotoController, @Override public void init(CameraActivity activity, View parent) { mActivity = activity; - mSettingsManager = SettingsManager.getInstance(); + mSettingsManager = activity.getSettingsManager(); mSettingsManager.registerListener(this); mSettingsManager.init(); mFirstPreviewLoaded = false; diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java index cf3ca6d3a..69d0572fe 100644 --- a/src/com/android/camera/CaptureUI.java +++ b/src/com/android/camera/CaptureUI.java @@ -261,7 +261,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI, mActivity = activity; mModule = module; mRootView = parent; - mSettingsManager = SettingsManager.getInstance(); + mSettingsManager = activity.getSettingsManager(); mSettingsManager.registerListener(this); mActivity.getLayoutInflater().inflate(R.layout.capture_module, (ViewGroup) mRootView, true); diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index c8f3f8c7b..f4162c79f 100644 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -120,7 +120,6 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final String KEY_SHUTTER_SOUND = "pref_camera2_shutter_sound_key"; private static final String TAG = "SnapCam_SettingsManager"; - private static SettingsManager sInstance; private ArrayList<CameraCharacteristics> mCharacteristics; private ArrayList<Listener> mListeners; private Map<String, Values> mValuesMap; @@ -133,7 +132,7 @@ public class SettingsManager implements ListMenu.SettingsListener { private JSONObject mDependency; private int mCameraId; - private SettingsManager(Context context) { + public SettingsManager(Context context) { mListeners = new ArrayList<>(); mCharacteristics = new ArrayList<>(); mContext = context; @@ -173,23 +172,6 @@ public class SettingsManager implements ListMenu.SettingsListener { mDependency = parseJson("dependency.json"); } - public static SettingsManager createInstance(Context context) { - if (sInstance == null) { - sInstance = new SettingsManager(context); - } - return sInstance; - } - - public static SettingsManager getInstance() { - return sInstance; - } - - public void destroyInstance() { - if (sInstance != null) { - sInstance = null; - } - } - public List<String> getDisabledList() { List<String> list = new ArrayList<>(); Set<String> keySet = mValuesMap.keySet(); |