diff options
author | Jeff Sharkey <jsharkey@android.com> | 2013-01-05 09:47:36 -0800 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2013-01-05 09:47:36 -0800 |
commit | 701d66efeff513a7509eeaafab6e47f4f6edb857 (patch) | |
tree | 6d5cd0c778dcb8c3bfc8f8c4db1a650861859e48 | |
parent | b62364ce70074dbdea03aafdc0f64c7ba39c3a69 (diff) | |
download | android_packages_providers_DownloadProvider-701d66efeff513a7509eeaafab6e47f4f6edb857.tar.gz android_packages_providers_DownloadProvider-701d66efeff513a7509eeaafab6e47f4f6edb857.tar.bz2 android_packages_providers_DownloadProvider-701d66efeff513a7509eeaafab6e47f4f6edb857.zip |
Remove singleton StorageManager.
Now DownloadService creates and owns the lifecycle of its own
StorageManager instance.
Change-Id: I8f6bedc02f1dbe610a8e6a25d55383a12716d344
4 files changed, 19 insertions, 27 deletions
diff --git a/src/com/android/providers/downloads/DownloadInfo.java b/src/com/android/providers/downloads/DownloadInfo.java index 5172b696..2ea7d84d 100644 --- a/src/com/android/providers/downloads/DownloadInfo.java +++ b/src/com/android/providers/downloads/DownloadInfo.java @@ -54,8 +54,9 @@ public class DownloadInfo { mCursor = cursor; } - public DownloadInfo newDownloadInfo(Context context, SystemFacade systemFacade) { - DownloadInfo info = new DownloadInfo(context, systemFacade); + public DownloadInfo newDownloadInfo(Context context, SystemFacade systemFacade, + StorageManager storageManager) { + DownloadInfo info = new DownloadInfo(context, systemFacade, storageManager); updateFromDatabase(info); readRequestHeaders(info); return info; @@ -229,12 +230,15 @@ public class DownloadInfo { public int mFuzz; private List<Pair<String, String>> mRequestHeaders = new ArrayList<Pair<String, String>>(); - private SystemFacade mSystemFacade; - private Context mContext; - private DownloadInfo(Context context, SystemFacade systemFacade) { + private final Context mContext; + private final SystemFacade mSystemFacade; + private final StorageManager mStorageManager; + + private DownloadInfo(Context context, SystemFacade systemFacade, StorageManager storageManager) { mContext = context; mSystemFacade = systemFacade; + mStorageManager = storageManager; mFuzz = Helpers.sRandom.nextInt(1001); } @@ -572,7 +576,7 @@ public class DownloadInfo { void startDownloadThread() { DownloadThread downloader = new DownloadThread(mContext, mSystemFacade, this, - StorageManager.getInstance(mContext)); + mStorageManager); mSystemFacade.startThread(downloader); } diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index c554e41d..7af8173b 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -446,7 +446,7 @@ public final class DownloadProvider extends ContentProvider { // saves us by getting some initialization code in DownloadService out of the way. Context context = getContext(); context.startService(new Intent(context, DownloadService.class)); - mDownloadsDataDir = StorageManager.getInstance(getContext()).getDownloadDataDirectory(); + mDownloadsDataDir = StorageManager.getDownloadDataDirectory(getContext()); return true; } diff --git a/src/com/android/providers/downloads/DownloadService.java b/src/com/android/providers/downloads/DownloadService.java index b97346b2..e0fe4c55 100644 --- a/src/com/android/providers/downloads/DownloadService.java +++ b/src/com/android/providers/downloads/DownloadService.java @@ -225,7 +225,7 @@ public class DownloadService extends Service { mNotifier = new DownloadNotifier(this); mNotifier.cancelAll(); - mStorageManager = StorageManager.getInstance(getApplicationContext()); + mStorageManager = new StorageManager(this); updateFromProvider(); } @@ -435,7 +435,7 @@ public class DownloadService extends Service { * download if appropriate. */ private DownloadInfo insertDownloadLocked(DownloadInfo.Reader reader, long now) { - DownloadInfo info = reader.newDownloadInfo(this, mSystemFacade); + DownloadInfo info = reader.newDownloadInfo(this, mSystemFacade, mStorageManager); mDownloads.put(info.mId, info); if (Constants.LOGVV) { diff --git a/src/com/android/providers/downloads/StorageManager.java b/src/com/android/providers/downloads/StorageManager.java index 915d141b..8ca17300 100644 --- a/src/com/android/providers/downloads/StorageManager.java +++ b/src/com/android/providers/downloads/StorageManager.java @@ -71,12 +71,6 @@ class StorageManager { */ private final File mDownloadDataDir; - /** the Singleton instance of this class. - * TODO: once DownloadService is refactored into a long-living object, there is no need - * for this Singleton'ing. - */ - private static StorageManager sSingleton = null; - /** how often do we need to perform checks on space to make sure space is available */ private static final int FREQUENCY_OF_CHECKS_ON_SPACE_AVAILABILITY = 1024 * 1024; // 1MB private int mBytesDownloadedSinceLastCheckOnSpace = 0; @@ -84,19 +78,9 @@ class StorageManager { /** misc members */ private final Context mContext; - /** - * maintains Singleton instance of this class - */ - synchronized static StorageManager getInstance(Context context) { - if (sSingleton == null) { - sSingleton = new StorageManager(context); - } - return sSingleton; - } - - private StorageManager(Context context) { // constructor is private + public StorageManager(Context context) { mContext = context; - mDownloadDataDir = context.getCacheDir(); + mDownloadDataDir = getDownloadDataDirectory(context); mExternalStorageDir = Environment.getExternalStorageDirectory(); mSystemCacheDir = Environment.getDownloadCacheDirectory(); startThreadToCleanupDatabaseAndPurgeFileSystem(); @@ -308,6 +292,10 @@ class StorageManager { return mDownloadDataDir; } + public static File getDownloadDataDirectory(Context context) { + return context.getCacheDir(); + } + /** * Deletes purgeable files from the cache partition. This also deletes * the matching database entries. Files are deleted in LRU order until |