Visit GitHub Repo
Download Managers

download-manager CI status Download from BintrayApache 2.0 Licence

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 {

dependencies {
    compile 'com.novoda:download-manager:<latest-version>'

Simple usage

  1. Create a DownloadManager:
DownloadManager downloadManager = DownloadManagerBuilder
        .newInstance(this, handler, R.mipmap.ic_launcher_round)
        .withLogHandle(new DemoLogHandle())
  1. Create a Batch of files to download:
Batch batch = Batch.with(primaryStorageWithDownloadsSubpackage, DownloadBatchIdCreator.createSanitizedFrom("batch_id_1"), "batch one title")
        .downloadFrom("").saveTo("foo/bar", "").withIdentifier(DownloadFileIdCreator.createFrom("file_id_1")).apply()
  1. Schedule the batch for download:;


CI status Download from Bintray

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 ''

You can find the latest snapshot version following this link.


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.

Become Pro in Android by watching videos