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>