1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android Downloadライブラリ覚書

Posted at

はじめに

PJでダウンロードを管理するライブラリの検討、サンプル実装をすることになりました。
こちらはその時の覚書です。

要件

  • 複数のダウンロードリクエストを管理できる (ダウンロード状態を管理できる、 開始・実行中・完了・エラーなど)
  • ダウンロードするファイルはユーザーが通常使えない場所が好ましい
  • 一定以上の使用実績や情報がある

検討1. DownloadManager

Google のガイドにある通り、はじめはDownloadManagerで開発を進めていました。
https://developer.android.com/guide/background

が、DownloadManagerは今回のPJの要件では使えない致命的な特徴がありました...
stack over flow
の記事にもある通り、DownloadMangaerでは一時的であっても、
外部ストレージにファイルを保存する必要があります。

ここが引っかかって、今回は不採用となりました。
(もちろん、BroadcastReceiver使えばいいんですが、外部ストレージの削除を保証する仕組みができるか怪しいのと一部端末でダウンロードができない事象が発生したため。元々、メーカーごとに外部ストレージの構造が異なるAndroidでは動かない端末なども出てきそうなので...)

検討2. Fetch

自分が検討したというよりも、推薦・サンプル実装を他のメンバーが進めていたものになります。
https://github.com/tonyofrancis/Fetch

Githubで探してみても、AndroidのDownloadManagerって驚くほど少なくて、
これはほぼ唯一と言っていいくらい作り込みや宣伝がきちんとできていたものでした。

使ってみて、内部ストレージへの直接保存もできているのでひとまずはこちらを使ってます。

ちょっと作りかけですが、サンプルも置いておきます...
https://github.com/shinya-takano/FetchSample

まとめ

そもそも、大容量ファイルでなければDownloadManagerやFetchなどの選択肢じゃなくていいのかもと思いました。
(以前のPJでは、普通にOkHttpを使用していたので...とはいえ、今回は多数のダウンロードリクエストを管理しないといけないためダウンロードライブラリが必要でしたが...)

皆様はどうやっているのでしょうか...

その他

ログ送信のような機能でWorkManagerも使ってみてます。
案外、WorkMangagerでも今回は足りた気がしていて、
短時間のダウンロードであればこちらにスイッチした方が使いやすいかなと若干思いました。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?