【问题标题】:Best practices for updating a progress from background service [Android]从后台服务更新进度的最佳实践 [Android]
【发布时间】:2015-05-19 13:02:29
【问题描述】:

对不起,如果我再次提问,但我没有找到任何与此问题相关的信息。

我正在后台服务中下载/上传文件。我想通过此服务发送文件下载/上传的进度。我知道的一种方法是每隔 5% 或 10% 的文件下载/上传发送广播。另一种是将activity与service绑定,实现一个接口,service会通知绑定的activity,下载/上传了哪个文件。不知道哪种方法好。如果您有其他好的方法,请与我分享。最多可以同时进行 5 个文件下载/上传。

提前致谢。

注意: 我没有停留在我开始下载的活动中,用户可以回家,可以开始使用其他应用程序,但是无论何时他回来,都会通知他文件下载/上传的更新进度

【问题讨论】:

    标签: android android-intent android-service progress


    【解决方案1】:

    最好的解决方案是使用IntentService IntentService 类为在单个后台线程上运行操作提供了一个简单的结构。这允许它处理长时间运行的操作,而不会影响用户界面的响应能力。此外,IntentService 不受大多数​​用户界面生命周期事件的影响,因此它会在会关闭 AsyncTask 的情况下继续运行

    但是 IntentService 有一些限制:

    • 它不能直接与您的用户界面交互。要将其结果放入 UI,您必须将它们发送到 Activity。
    • 工作请求按顺序运行。如果一个操作正在 IntentService 中运行,并且您向它发送另一个请求,则该请求会一直等待,直到第一个操作完成。
    • 在 IntentService 上运行的操作不能被中断。

    但是,在大多数情况下,IntentService 是执行简单后台操作的首选方式。

    注意:如果您的应用面向 Android 5.0(API 级别 21),您应该使用 JobScheduler 来执行后台服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-24
      • 2015-08-17
      • 2013-07-31
      • 2011-08-28
      • 2014-03-06
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      相关资源
      最近更新 更多