download-manager
A library that handles long-running downloads, handling the network interactions and retrying downloads automatically after failures. Clients can request downloads in batches, receiving a single notification for all of the files allocated to a batch while being able to retrieve the single files after downloads complete.
Adding to your project
To start using this library, add these lines to the build.gradle
of your project:
repositories {
jcenter()
}
dependencies {
compile 'com.novoda:download-manager:<latest-version>'
}
Simple usage
- Create a
DownloadManager
:
DownloadManager downloadManager = DownloadManagerBuilder
.newInstance(this, handler, R.mipmap.ic_launcher_round)
.withLogHandle(new DemoLogHandle())
.withStorageRequirementRules(StorageRequirementRuleFactory.createByteBasedRule(TWO_HUNDRED_MB_IN_BYTES))
.build();
- Create a
Batch
of files to download:
Batch batch = Batch.with(primaryStorageWithDownloadsSubpackage, DownloadBatchIdCreator.createSanitizedFrom("batch_id_1"), "batch one title")
.downloadFrom("http://ipv4.download.thinkbroadband.com/5MB.zip").saveTo("foo/bar", "local-filename-5mb.zip").withIdentifier(DownloadFileIdCreator.createFrom("file_id_1")).apply()
.downloadFrom("http://ipv4.download.thinkbroadband.com/10MB.zip").apply()
.build();
- Schedule the batch for download:
downloadManager.download(batch);
Snapshots
Snapshot builds from develop
are automatically deployed to a repository that is not synced with JCenter.
To consume a snapshot build add an additional maven repo as follows:
repositories {
maven {
url 'https://dl.bintray.com/novoda-oss/snapshots/'
}
}
You can find the latest snapshot version following this link.
Contributing
We always welcome people to contribute new features or bug fixes, here is how.
If you have a problem, check the Issues Page first to see if we are already working on it.