并行下载多个文件,就像 Android 中的 Whats App 一样

2024-04-03

我已经知道使用服务/意图服务我们下载多个文件在背景中。但这个问题还有一个更复杂的问题需要解决。

我必须在不同的活动中并行下载多个视频/图像,例如 Whatsapp。我在什么应用程序中看到我们可以开始下载,然后我们可以在不同的屏幕上移动或按主页按钮等。但是当我们再次移回该屏幕时,下载仍然继续并显示更新的进度。

与上面一样,有 4 个活动,用户开始在活动 A 上下载 ABC.mp4,然后转到活动 B。然后转到 C 并开始下载视频/图像。如果用户返回到 A,我想显示该 ABC.mp4 文件的进度(即下载量)以及其他活动的相同情况。

请让我知道您的服务或任何其他方式,以便我可以使用下载文件的更新值来更新 UI。任何帮助表示赞赏。


这是我的建议:

不久前我也做了同样的事情,不过是用 Pdf 文件。首先,您需要选择一个好的 Http 客户端库来执行下载,并且忘记如果您自己执行此操作将遇到的所有与下载相关的问题。我建议您使用离子库 https://github.com/koush/ion有很多有用的功能,例如取消下载、附加回调以关注下载进度、了解下载是否成功、失败等。

其次,你显然需要一个在后台运行的服务,总是,你可以通过创建自己的服务来做到这一点,并且 Android 清单中的服务进程名称类似于android:name="com.company.app.services.MyService"不喜欢android:name=":MyRemoteService"这样做,您将确保该服务始终在后台运行(请记住,如果有必要,操作系统可以并且将会终止该服务,但当资源再次可用时,该服务将重新启动)。

第三,要保持显示这些文件的所有视图、自定义视图、活动、片段等更新,您需要触发器BroadcastReceiver来自您的服务。请记住,这样做您将无法使用LocalBroadcastReceiver,因为您的服务有自己独立于您的应用程序的流程。

请记住:

1)无需显式使用 Activity,您可以在任何您认为合适的地方注册您的广播。一个 RecyclerAdapter(最有可能)、一个 Fragment 或一个 Activity。

2)通信应用程序/服务是通过Intents因此,您发送到服务和从服务发送的所有数据都必须是Serializable.

3) 您可以使用多种不同类型的广播,每种类型用于不同的情况(错误、失败、成功、进度等),或者您可以仅使用一种广播来发送enum当您从服务中触发广播时,通过意图捆绑来描述这种状态

希望这对您有帮助,如果您有任何疑问,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

并行下载多个文件,就像 Android 中的 Whats App 一样 的相关文章

  • C# 与 JAVA 接口实例

    我不知道该如何回答我的问题 它是关于Android可以实例化接口的 我正在尝试用 C 来做 现在我非常确定 Java 和 C 的规则是不能创建抽象和接口的实例 但我很想知道Android是如何做到这一点的 在 Android 中你可以这样做
  • 如何将值从 android 传递到 php Web 服务并检索它?

    我正在尝试将一个值传递给我的 php web 服务 我已经使用此代码来传递 名称 值 private class MyAsyncTask extends AsyncTask
  • 从SQLite列中获取所有数字字符串并进行总和计算

    我是 Android 和 SQLite 的新手 我在 SQLite 中有一个只有数字的 AMOUNT 列 我可以在 ListView 中显示它 但我无法找到任何我理解的方法来将它们全部添加并显示在 TextView 中 这是数据库助手 im
  • 使用 Android NDK r5b 链接静态库时出现问题 [重复]

    这个问题在这里已经有答案了 最近升级到 NDK r5b 构建失败 并出现对静态库中函数的 未定义引用 这是错误 home brian workspace VoiceEngineDemo obj local armeabi v7a objs
  • WebView 与 Chrome 自定义选项卡

    我正在构建一个应用程序 在详细活动中我必须显示一个网页 我本来打算使用 WebView 但后来我看到了 Chrome Custom Tab 你们认为最好实施什么 为什么 如果您只想显示某个页面 那么我建议您使用 chrome 自定义选项卡
  • Android 无法查找支持版本 27.0.0 的窗口

    更新后supportVersion to 27 0 0仅在 Android 5 0 2 上 应用程序会因以下堆栈跟踪而崩溃 W WindowManager Failed looking up window java lang Illegal
  • Android 闹钟应用程序在 Oreo 下因 NullPointerException 导致 SystemUI 崩溃(仅限)

    我有一个 Android 闹钟应用程序 我有通常的 警报意图 gt 接收器 gt 活动链 其最后一步创建一个全屏窗口并发出警报 所有这些在 Oreo API 26 之前的 Android 版本上都可以正常工作 但在 Oreo 上 当警报触发
  • Android 拖放 ACTION_DRAG_ENDED 未触发

    我真的很花时间解决这个问题 到目前为止找不到任何有相关经验的朋友 这是我发布第一个应用程序之前的最后一个功能 所以在结局即将到来的情况下陷入困境让我发疯 如果我将对象放在可接受的区域中 我的拖放效果会非常好 但是 如果拖放到其他地方 我不会
  • 实施材质主题时遇到问题

    我在用this http antonioleiva com material design everywhere 作为在 Android 5 0 之前的设备上向现有应用程序实施 Material 主题的教程 我的问题是我得到了Null Po
  • 如何以编程方式启用小米应用程序的自动启动

    我想知道小米是否可以提供任何应用程序的后台服务 我的应用程序中有需要始终在后台运行的服务 在除小米之外的所有设备中都工作正常 如何以编程方式完成 也适用于小米 oppo vivo 和 oneplus 手机 try Intent intent
  • Android 中表与游标的并集

    我正在尝试将两个具有相同字段的表合并起来 通过内容提供程序 创建一个用于创建 ListView 的游标 Override public Cursor query Uri uri String projection String select
  • 如何模糊视图

    I have a view having different colors I need to blur the background of that view for example There is LinearLayout in wh
  • 如何在应用程序中创建会话对象

    在我的应用程序中 我想创建一个用于登录和注销的会话 我不知道如何使用会话 任何人都可以通过提供一些示例来帮助我 我认为会话对象应该是在应用程序开始运行时声明和初始化的静态对象 我遇到了这个问题 并决定将我的会话对象放入 utils 类中 该
  • 直接在应用程序中评价 Google Play 应用程序 [重复]

    这个问题在这里已经有答案了 我需要在我的 Android 应用程序中设置费率选项 我找到了这个link http www androidsnippets com prompt engaged users to rate your app i
  • 如何修补更新 Android Studio (0.80 -> 0.81)?

    我安装了 Android Studio Beta v0 8 0 并下载了 v0 8 1 因为 IDE 不会自动下载 v0 80 并使用新版本修补 Android Studio 的预览系列自动做到了这一点 从他们的网页 http tools
  • 短信管理器在少于 160 个字符时发送多部分消息

    我编写了一个使用短信管理器的应用程序 我用的方法sendTextMessage 但这行不通 现在我正在使用sendMutlipartTextMessage 这是工作 但当它大约 60 个字符时 它会发送多部分消息 这个是正常的 我读过的所有
  • Android 4.2以下如何设置layoutDirection为RTL

    尝试将布局元素设置为 RTL 顺序 4 2 及以上行 layoutDirection rtl 并在清单中 android supportsRtl true 工作得很好 但对于 4 2 以下则不然 解决方案有人吗 只需使用视图兼容使用 and
  • 找不到元素“android.support.constraint.ConstraintLayout”的声明

    我创建了一个名为的 xml 文件activity main sw50dp 但是当我尝试验证它时 它给了我错误 错误 4 42 cvc elt 1 a 找不到元素 android support constraint ConstraintLa
  • Android PhoneGap 中的自定义字体

    我尝试为我的应用程序制作自定义字体 为此 我在 html 文件中编写了以下代码 在我的 HTML 正文中
  • 安装 APK 时出现会话“应用程序”错误

    我在将 Android Studio 1 1 编写的项目导入 Android Studio 2 1 2 时遇到困难 每当在平板电脑上测试应用程序之前构建 gradle 时 我都会收到此错误 下面是错误的屏幕截图 有谁知道是什么问题 我尝试过

随机推荐

  • 更新应用程序的最佳方式

    我正在使用 WPF 技术开发游戏 我想每三天向游戏添加新功能 更新的大小对我来说很重要 我的游戏需要联网才能启动 就像网络游戏一样 另一个挑战是更新的大小 最重要的注意事项 我需要更新程序不需要停止 你的建议是什么 clickonce 是个
  • 如何将 XYSplineRenderer 图中的正方形形状更改为点

    In JFreeChart XYSplineRenderer Graph I need to display small dots instead of small squares to display XY coordinates How
  • 修改VCL组件代码

    我需要更改组件中的功能 当您收到 您无法覆盖此 消息 或者您需要更改私有方法中的代码 基类中不存在该方法 消息 导致组件无法下降时 您该怎么办 如果我遇到这个问题 我首先尝试从组件或其 CustomXXX 祖先继承 看看是否可以解决问题 如
  • 如何在_Layout视图中访问UserProfile

    在我的 MVC 应用程序中 我有一个共享的 Layout cshtml 文件 用于显示用户的菜单 在该视图上 我想显示来自 UserProfile 实体的信息 使用 SimpleMembership 创建 因此链接到可以在 Layout 页
  • 在 Cordova 应用程序中播放音频

    我正在使用 Cordova 媒体插件在我的移动应用程序中播放音频 我尝试了很多代码 但我没有弄清楚我在底部做错了什么 我放了两段我尝试过的代码 第一个代码 js代码在单独的文件中 var app initialize function th
  • Windows 7 上的 XAMPP 无法正常工作

    我刚刚在 Windows 7 上安装了 XAMPP lite 我有两个驱动器 C 用于操作系统和常规文件 以及外部驱动器 E 我在 E 根目录 上安装了 XAMPP lite 但它一直给我带来问题 Apache 工作得很好 但 MySQL
  • Apache Netbeans 10 CVS 插件不可用?

    我最终升级到 Apache Netbeans 10 从 8 2 并想像往常一样使用菜单安装 CVS 插件Tools gt Plugins gt Available Plugins 但是 我似乎无法找到 访问该插件 在 设置 中 我激活了 N
  • JQuery tablesorter pager 插件在 Edge 模式下无法与 IE11 正常工作

    如果您使用带有分页器的 Tablesorter Jquery 插件 则表上的添加将不会显示任何数据 数据就在那里 但它是隐藏的 我怀疑该插件的浏览器功能检测方法无法处理IE11 还有其他人遇到这个吗 看来IE11的userAgent有问题
  • 使用 snmp 代理注册 OID

    我正在尝试使用 snmp4j 模拟 SNMP 代理 我正在尝试向代理注册 MO 下面是代码片段 static final OID mo1 new OID 1 3 6 1 4 1 1234 1 104 static final OID mo2
  • 在 Coq 中,“if then else”允许非布尔第一个参数?

    我读过一些教程if a then b else c代表match a with true gt b false gt c end 然而 很奇怪的是 前者不检查类型a 而后者当然确保a是一个布尔值 例如 Coq lt Check if nil
  • java中的内存文件系统

    我想用Java创建一个简单的内存文件系统 它有一个根目录 并且能够创建新的子目录 在该目录中 我们可以创建新文件 写入文件 读取文件 删除文件以及重命名文件 您能否提供一些从哪里开始的建议 简单的代码或资源 自定义文件系统提供程序必须实现
  • 临时值在此语句结束时被释放[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Select 箱子抓取网页 let document Document from read response unwrap for node in document find Class lia
  • HTML5 视频,如果没有 .ogv 文件,则回退到 Flash

    如果不存在必要的文件类型 如何回退到 Flash 视频播放器 例如这段代码
  • 我可以在为服务器提供 API 的同时提供静态文件吗?

    所以我对网络开发还很陌生 现在我和我更加面向网络的朋友开始了一个项目 他向我扔了各种各样的框架 我们正在做 Vuejs jade stylus 和 jeet 对于新手来说 这当然非常令人困惑 因为没有 Vuejs 示例使用 jade 没有
  • 绘制三角形 iOS

    下面的代码画了一个圆圈 我如何修改现有代码来画一个三角形 colorDotLayer CALayer layer CGFloat width self bounds size width 6 colorDotLayer bounds CGR
  • 为什么我的充电状态接收器总是返回 false?

    我试图检测用户何时插入 或拔出 设备进行充电 在我的接收器中 当我确定它是否已插入时 我总是得到 错误 的状态读数 这是我的代码 在清单中
  • 如何在 shell 中解析长格式参数?

    我所看到的一切都使用getopt或者稍微花哨一点的getopts仅支持单字符选项 例如 h但不是 help 我想做一些花哨的长选择 我做过类似的事情this http blogger ziesemer com 2010 01 dyndns
  • 带有变量的 Swift 闭包导致内存泄漏

    我正在调试我的程序 发现内存泄漏问题 在ViewController中 当它弹出时 应该调用deinit函数 但事实并非如此 所以我尝试通过以下步骤来解决这个问题 通过注释多行 我发现以下几行使得 ViewController 没有释放 v
  • TimeZoneInfo.ConvertTimeToUtc 问题

    我们遇到一个问题 一位开发人员创建了以下代码 并且该代码可以在他的 DEV 环境中运行 但是当它被签入 QA 时 代码会中断并显示以下错误消息 myRecord UTCStartTime TimeZoneInfo ConvertTimeTo
  • 并行下载多个文件,就像 Android 中的 Whats App 一样

    我已经知道使用服务 意图服务我们下载多个文件在背景中 但这个问题还有一个更复杂的问题需要解决 我必须在不同的活动中并行下载多个视频 图像 例如 Whatsapp 我在什么应用程序中看到我们可以开始下载 然后我们可以在不同的屏幕上移动或按主页