Fix a mistake of CameraAgentFactory's recycle();
Ensure CameraAgentFactory's recycle() is called in AppUpgrader and PictureSizeLoader,
so sAndroidCameraAgent will be recycle correctly.
Change-Id: Ie1867383fdd39b50cf73646fcbd8784ac8c78658
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 57384db..a89ef1f 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -1503,7 +1503,9 @@
// version.
profile.mark();
try {
- (new PictureSizeLoader(mAppContext)).computePictureSizes();
+ PictureSizeLoader pictureSizeLoader = new PictureSizeLoader(mAppContext);
+ pictureSizeLoader.computePictureSizes();
+ pictureSizeLoader.release();
} catch (AssertionError e) {
Log.e(TAG, "Creating camera controller failed.", e);
mFatalErrorHandler.onGenericCameraAccessFailure();
diff --git a/src/com/android/camera/settings/AppUpgrader.java b/src/com/android/camera/settings/AppUpgrader.java
index 92bd953..930c3e2 100644
--- a/src/com/android/camera/settings/AppUpgrader.java
+++ b/src/com/android/camera/settings/AppUpgrader.java
@@ -145,6 +145,7 @@
// chooser if applicable.
settingsManager.remove(SettingsManager.SCOPE_GLOBAL,
Keys.KEY_STARTUP_MODULE_INDEX);
+ CameraAgentFactory.recycle(CameraAgentFactory.CameraApi.API_1);
}
if (lastVersion < CAMERA_MODULE_SETTINGS_FILES_RENAMED_VERSION) {
diff --git a/src/com/android/camera/settings/CameraSettingsActivity.java b/src/com/android/camera/settings/CameraSettingsActivity.java
index 50641fd..efe5796 100644
--- a/src/com/android/camera/settings/CameraSettingsActivity.java
+++ b/src/com/android/camera/settings/CameraSettingsActivity.java
@@ -180,6 +180,7 @@
mInfos = CameraAgentFactory
.getAndroidCameraAgent(context, CameraAgentFactory.CameraApi.API_1)
.getCameraDeviceInfo();
+ CameraAgentFactory.recycle(CameraAgentFactory.CameraApi.API_1);
}
@Override
@@ -498,6 +499,7 @@
}
PictureSizeLoader loader = new PictureSizeLoader(getActivity().getApplicationContext());
mPictureSizes = loader.computePictureSizes();
+ loader.release();
}
/**
diff --git a/src/com/android/camera/settings/PictureSizeLoader.java b/src/com/android/camera/settings/PictureSizeLoader.java
index a3cb49b..582d77f 100644
--- a/src/com/android/camera/settings/PictureSizeLoader.java
+++ b/src/com/android/camera/settings/PictureSizeLoader.java
@@ -97,6 +97,10 @@
mCachedOnly = cachedOnly;
}
+ public void release(){
+ CameraAgentFactory.recycle(CameraAgentFactory.CameraApi.API_1);
+ }
+
/**
* Computes the list of picture sizes that should be displayed by settings.
* <p>