summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2013-01-05 09:47:36 -0800
committerJeff Sharkey <jsharkey@android.com>2013-01-05 09:47:36 -0800
commit701d66efeff513a7509eeaafab6e47f4f6edb857 (patch)
tree6d5cd0c778dcb8c3bfc8f8c4db1a650861859e48 /src
parentb62364ce70074dbdea03aafdc0f64c7ba39c3a69 (diff)
downloadandroid_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
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/downloads/DownloadInfo.java16
-rw-r--r--src/com/android/providers/downloads/DownloadProvider.java2
-rw-r--r--src/com/android/providers/downloads/DownloadService.java4
-rw-r--r--src/com/android/providers/downloads/StorageManager.java24
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