diff options
author | Vasu Nori <vnori@google.com> | 2011-03-10 11:57:56 -0800 |
---|---|---|
committer | Vasu Nori <vnori@google.com> | 2011-03-10 15:20:25 -0800 |
commit | 6baceb7073ed7858d3424ccf774e5f6a946bec59 (patch) | |
tree | c2b3466f2dee3b0ec9a01dbe649206f0ec48932b /src/com/android/providers/downloads/DownloadInfo.java | |
parent | 34cebab410fe28edb9eb1bba6df96ceaa0224739 (diff) | |
download | android_packages_providers_DownloadProvider-6baceb7073ed7858d3424ccf774e5f6a946bec59.tar.gz android_packages_providers_DownloadProvider-6baceb7073ed7858d3424ccf774e5f6a946bec59.tar.bz2 android_packages_providers_DownloadProvider-6baceb7073ed7858d3424ccf774e5f6a946bec59.zip |
(master) bug:3204324 allow no more than certain number of concurrent downloads
Change-Id: Ibbce0782fcf7649209d6f56be240209cebd9045b
Diffstat (limited to 'src/com/android/providers/downloads/DownloadInfo.java')
-rw-r--r-- | src/com/android/providers/downloads/DownloadInfo.java | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/com/android/providers/downloads/DownloadInfo.java b/src/com/android/providers/downloads/DownloadInfo.java index 2973937e..bd8df864 100644 --- a/src/com/android/providers/downloads/DownloadInfo.java +++ b/src/com/android/providers/downloads/DownloadInfo.java @@ -216,8 +216,6 @@ public class DownloadInfo { public int mFuzz; - public volatile boolean mHasActiveThread; - private List<Pair<String, String>> mRequestHeaders = new ArrayList<Pair<String, String>>(); private SystemFacade mSystemFacade; private Context mContext; @@ -279,7 +277,7 @@ public class DownloadInfo { * should be started. */ private boolean isReadyToStart(long now) { - if (mHasActiveThread) { + if (DownloadHandler.getInstance().hasDownloadInQueue(mId)) { // already running return false; } @@ -442,19 +440,13 @@ public class DownloadInfo { if (Constants.LOGV) { Log.v(Constants.TAG, "Service spawning thread to handle download " + mId); } - if (mHasActiveThread) { - throw new IllegalStateException("Multiple threads on same download"); - } if (mStatus != Impl.STATUS_RUNNING) { mStatus = Impl.STATUS_RUNNING; ContentValues values = new ContentValues(); values.put(Impl.COLUMN_STATUS, mStatus); mContext.getContentResolver().update(getAllDownloadsUri(), values, null, null); } - DownloadThread downloader = new DownloadThread(mContext, mSystemFacade, this, - storageManager); - mHasActiveThread = true; - mSystemFacade.startThread(downloader); + DownloadHandler.getInstance().enqueueDownload(this); } public boolean isOnCache() { @@ -543,4 +535,10 @@ public class DownloadInfo { intent.putExtra(EXTRA_IS_WIFI_REQUIRED, isWifiRequired); mContext.startActivity(intent); } + + void startDownloadThread() { + DownloadThread downloader = new DownloadThread(mContext, mSystemFacade, this, + StorageManager.getInstance(mContext)); + mSystemFacade.startThread(downloader); + } } |