# lingochamp/filedownloader

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/lingochamp-filedownloader).**

11,118 stars · 2,207 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/lingochamp/FileDownloader
- awesome-repositories: https://awesome-repositories.com/repository/lingochamp-filedownloader.md

## Topics

`android` `breakpoint` `download` `downloader` `filedownloader` `high-concurrency` `multiple-process` `multiple-thread` `multitasking`

## Description

FileDownloader is an Android HTTP download manager and multi-threaded download engine designed for managing file transfers. It functions as a resumable transfer framework that utilizes a foreground service to maintain persistent background execution and prevent the operating system from terminating active tasks.

The project features a pluggable networking library architecture, allowing the replacement of default network, storage, and database implementations with custom components. It employs a multi-threaded engine that increases transfer speeds by splitting files into chunks for simultaneous retrieval over multiple concurrent connections.

The system includes a download queue for managing tasks by priority and supports breakpoint-resume capabilities through database-backed progress tracking. It provides task control for pausing or canceling jobs, network constraint configuration to limit transfers to specific connection types, and throttled event dispatching to maintain interface performance during real-time monitoring.

## Tags

### Networking & Communication

- [Concurrent Downloader Managers](https://awesome-repositories.com/f/networking-communication/packet-engines/packet-processing-frameworks/multi-threaded-packet-processing/multi-threaded-file-delivery/concurrent-downloader-managers.md) — Provides a client-side system for managing multi-threaded file downloads with support for resuming interrupted transfers. ([source](https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md))
- [Multi-threaded Downloading](https://awesome-repositories.com/f/networking-communication/resumable-downloads/multi-threaded-downloading.md) — Increases transfer speeds by splitting files into chunks and downloading them simultaneously over multiple concurrent connections.
- [Download Traffic Controllers](https://awesome-repositories.com/f/networking-communication/download-traffic-controllers.md) — Provides controls to start, pause, or cancel individual download jobs or all active transfers globally. ([source](https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md))
- [Resumable Downloads](https://awesome-repositories.com/f/networking-communication/resumable-downloads.md) — Tracks download progress and restarts transfers from the last successful byte after a pause or failure. ([source](https://github.com/lingochamp/filedownloader#readme))
- [Resumable File Transfers](https://awesome-repositories.com/f/networking-communication/resumable-file-transfers.md) — Provides a framework for recovering interrupted downloads from the last received byte using progress tracking.
- [Pluggable Network Layers](https://awesome-repositories.com/f/networking-communication/network-stacks/pluggable-network-layers.md) — Provides a pluggable network layer allowing the replacement of default communication components with custom implementations.
- [Connection Type Constraints](https://awesome-repositories.com/f/networking-communication/network-transfer-management/connection-type-constraints.md) — Limits file transfers to specific connection types like Wi-Fi to prevent unexpected data charges on mobile networks. ([source](https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md))

### Data & Databases

- [Transfer Offset Tracking](https://awesome-repositories.com/f/data-databases/database-backed-configurations/transfer-offset-tracking.md) — Implements database-backed tracking of byte offsets to enable resuming interrupted file transfers from the exact position.

### Development Tools & Productivity

- [Download Progress Tracking](https://awesome-repositories.com/f/development-tools-productivity/change-tracking/state-tracking-utilities/download-progress-tracking.md) — Records byte offsets and task states in a local database to facilitate recovery of interrupted downloads.
- [Core Logic Customizations](https://awesome-repositories.com/f/development-tools-productivity/component-configuration/llm-component-assignments/llm-component-customizations/core-logic-customizations.md) — Allows replacing default implementations for network connections, data streams, and database storage with custom logic. ([source](https://github.com/lingochamp/filedownloader#readme))

### Mobile Development

- [Foreground Service Implementations](https://awesome-repositories.com/f/mobile-development/mobile-capabilities/background-services/foreground-service-implementations.md) — Utilizes Android foreground services with persistent notifications to prevent the operating system from terminating active downloads.
- [Download Progress Listeners](https://awesome-repositories.com/f/mobile-development/download-progress-listeners.md) — Tracks the status of downloads through listeners that provide real-time updates on bytes transferred, speed, and completion. ([source](https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md))

### Software Engineering & Architecture

- [Download Priority Queues](https://awesome-repositories.com/f/software-engineering-architecture/priority-based-request-queues/download-priority-queues.md) — Manages a queue of download tasks that execute based on priority, supporting sequential or parallel processing.
- [Parallel Download Queues](https://awesome-repositories.com/f/software-engineering-architecture/priority-based-request-queues/download-priority-queues/parallel-download-queues.md) — Manages multiple simultaneous downloads with prioritization to optimize bandwidth and transfer speed.
- [Download Retry Policies](https://awesome-repositories.com/f/software-engineering-architecture/task-retry-policies/download-retry-policies.md) — Automatically attempts to restart failed download tasks a specified number of times upon network or file errors. ([source](https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md))
- [Pluggable Component Architectures](https://awesome-repositories.com/f/software-engineering-architecture/component-injection-systems/pluggable-component-architectures.md) — Provides a pluggable architecture to replace default networking, storage, and database implementations with custom classes.
- [Process Isolation](https://awesome-repositories.com/f/software-engineering-architecture/process-isolation.md) — Launches the download engine in a separate system process to isolate the user interface from engine crashes.

### Graphics & Multimedia

- [Download Behavior Configurations](https://awesome-repositories.com/f/graphics-multimedia/download-output-configuration/download-behavior-configurations.md) — Allows adjusting network thread counts, file pre-allocation, and synchronization intervals via properties files. ([source](https://github.com/lingochamp/FileDownloader/wiki/filedownloader.properties))

### User Interface & Experience

- [Throttled UI Updates](https://awesome-repositories.com/f/user-interface-experience/main-thread-dispatchers/throttled-ui-updates.md) — Limits the frequency of progress updates sent to the main thread to prevent interface lag and frame drops.
