<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: SimpleDownloader</title>
    <description>The latest articles on DEV Community by SimpleDownloader (simpledownloader).</description>
    <link>https://dev.to/simpledownloader</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F14370%2F28398289-c26a-4b59-ada9-64ad2a44ad02.jpg</url>
      <title>DEV Community: SimpleDownloader</title>
      <link>https://dev.to/simpledownloader</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/simpledownloader"/>
    <language>en</language>
    <item>
      <title>SimpleDownloader v1.0.0</title>
      <dc:creator>Jeetarc</dc:creator>
      <pubDate>Tue, 08 Sep 2026 12:43:41 +0000</pubDate>
      <link>https://dev.to/simpledownloader/simpledownloader-v100-47km</link>
      <guid>https://dev.to/simpledownloader/simpledownloader-v100-47km</guid>
      <description>&lt;h2&gt;
  
  
  v1.0.0
&lt;/h2&gt;

&lt;p&gt;Stable release of SimpleDownloader with a cleaner API, improved task management, and many more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Added
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Multi-download management&lt;/li&gt;
&lt;li&gt;Instance-based downloader API with &lt;code&gt;SimpleDownloader.getInstance(context)&lt;/code&gt; and &lt;code&gt;SimpleDownloader.builder(context)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DownloadRequest&lt;/code&gt; API for defining individual downloads separately from downloader configuration.&lt;/li&gt;
&lt;li&gt;Downloader ownership through &lt;code&gt;ownerId&lt;/code&gt;, if not set, it use library default: &lt;code&gt;"default_owner"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Added support for batch downloads and clearer separation between global downloader settings and per download options.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fixes &amp;amp; Improvements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Safer task management when multiple downloader instances are used.&lt;/li&gt;
&lt;li&gt;Improved separation of task state, queues, and concurrency between downloader instances.&lt;/li&gt;
&lt;li&gt;Improved database handling and task ownership.&lt;/li&gt;
&lt;li&gt;General stability and lifecycle improvements for the stable release.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Migration for beta users
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Update the dependency:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gradle"&gt;&lt;code&gt;&lt;span class="n"&gt;implementation&lt;/span&gt; &lt;span class="s2"&gt;"com.github.jeetarc:SimpleDownloader:1.0.0"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2. Replace the old download API:
&lt;/h4&gt;

&lt;p&gt;Beta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;DownloadTask&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;SimpleDownloader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setOutput&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;folderUri&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;FileName&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;AUTO&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFileUrl&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;startDownload&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;SimpleDownloader&lt;/span&gt; &lt;span class="n"&gt;downloader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;SimpleDownloader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getInstance&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;DownloadRequest&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DownloadRequest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;folderUri&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;FileName&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;AUTO&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fileUrl&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;DownloadTask&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;downloader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;startDownload&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;SimpleDownloader.builder(context)&lt;/code&gt; and &lt;code&gt;DownloadRequest.builder()&lt;/code&gt; for more controls. &lt;a href="https://github.com/jeetarc/SimpleDownloader/blob/main/README.md" rel="noopener noreferrer"&gt;Read APIs&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Update listeners:
&lt;/h4&gt;

&lt;p&gt;Move from the beta listener API to the stable APIs:&lt;/p&gt;

&lt;p&gt;Beta: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DownloadListener&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DownloadTask.Listener&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SimpleDownloader.Listener&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. Read README for more:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://github.com/jeetarc/SimpleDownloader/blob/main/README.md" rel="noopener noreferrer"&gt;https://github.com/jeetarc/SimpleDownloader/blob/main/README.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SimpleDownloader on GitHub:&lt;br&gt;
&lt;a href="https://github.com/jeetarc/SimpleDownloader" rel="noopener noreferrer"&gt;https://github.com/jeetarc/SimpleDownloader&lt;/a&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>downloader</category>
      <category>opensource</category>
      <category>simpledownloader</category>
    </item>
    <item>
      <title>SimpleDownloader - an Android downloader manager library designed to simplify complex file downloading behind a simple API</title>
      <dc:creator>Jeetarc</dc:creator>
      <pubDate>Tue, 18 Aug 2026 04:48:49 +0000</pubDate>
      <link>https://dev.to/simpledownloader/simpledownloader-an-android-downloader-manager-library-designed-to-simplify-complex-file-3hpl</link>
      <guid>https://dev.to/simpledownloader/simpledownloader-an-android-downloader-manager-library-designed-to-simplify-complex-file-3hpl</guid>
      <description>&lt;p&gt;SimpleDownloader got new features, API, and improved the stability.&lt;/p&gt;

&lt;p&gt;SimpleDownloader on GitHub: &lt;a href="https://github.com/jeetarc/SimpleDownloader" rel="noopener noreferrer"&gt;https://github.com/jeetarc/SimpleDownloader&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Added on v1.0.0-beta.1 :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build-in foreground service&lt;/li&gt;
&lt;li&gt;Build-in notifications with actions for pause, resume, cancel, and retry.&lt;/li&gt;
&lt;li&gt;Notification thumbnails.&lt;/li&gt;
&lt;li&gt;"DownloadListener" for task callbacks.&lt;/li&gt;
&lt;li&gt; "TaskListObserver" for observing the complete task list, for updateing RecyclerView, list, etc.&lt;/li&gt;
&lt;li&gt;Task restoration using "TaskField"&lt;/li&gt;
&lt;li&gt;Custom "OkHttpClient", headers, cookies, and user-agent support.&lt;/li&gt;
&lt;li&gt;Checksum verification&lt;/li&gt;
&lt;li&gt;Better task restoration after reopening the app.&lt;/li&gt;
&lt;li&gt;Better FileName, and MimeType mode handling.&lt;/li&gt;
&lt;li&gt;Reworked database structure.&lt;/li&gt;
&lt;li&gt;and many more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Added on v.1.0.0-beta.2 :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download speed and optimization improvement.&lt;/li&gt;
&lt;li&gt;Independent progress and notification intervals handling.&lt;/li&gt;
&lt;li&gt;Lighter thumbnail checks.&lt;/li&gt;
&lt;li&gt;Missing FileProvider no longer stops path downloads.&lt;/li&gt;
&lt;li&gt;forceDownload() bypasses concurrency and survives pause/resume&lt;/li&gt;
&lt;li&gt;TaskField filters for getTask() and getTasks().&lt;/li&gt;
&lt;li&gt;Simplified onQueued() callback (now contents 3 peramiters).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Added on v1.0.0-beta.3:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MediaStore output support on Android 10+.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;setSubFolder(...)&lt;/code&gt;. Works with filesystem paths, SAF/document-tree output, and MediaStore output.&lt;/li&gt;
&lt;li&gt;MediaStore item URI support with overwrite(Uri).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;TaskField.SUB_FOLDER_PATH&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;task.getSubFolderPath()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;setAutoRestore(true)&lt;/code&gt; for automatic restore and resume of tasks after app restart.&lt;/li&gt;
&lt;li&gt;Some other fixes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bug reports and feedbacks are welcome.&lt;/p&gt;

</description>
      <category>android</category>
      <category>downloader</category>
      <category>java</category>
      <category>kotlin</category>
    </item>
  </channel>
</rss>
