使用( Kotlin )从URL 下载媒体(图像,视频,音频等)的现代方法(2019年)是什么?
显然,在后台获取方面可以使用很多不同的机制:
Service
JobService
IntentService
JobScheduler
BroadcastReceiver
AsyncTask
DownloadManager
PoolExecutor
s 我几乎可以为上面列表中的每个项目找到至少一个示例,但是我找不到Google或Android Dev Community的“标准”,“推荐”或“官方”方法。
(这里不要求提供银弹,只是想知道什么是这种共同任务中最一致或最一致的方法,当然还有现代方法)
答案 0 :(得分:1)
Service是最快的-您可以立即下载所需数量的文件。您需要将其提升到前台(带有粘性通知),以在您的应用不在前台时启动和/或保持活动状态。
JobScheduler + JobService的侵入性较小,但其执行时间由系统管理,因此不适合即时请求。但是,您可以安排它定期运行,以检查是否有新内容要下载。
DownloadManager是一项系统服务。与其他方法不同,下载不会在您的应用程序过程中发生。那时您不需要自己编写任何连接方法,但是您所依赖的未知实现可能因设备而异。节流/卡死队列/取消之类的任何问题都无法控制。