【问题标题】:How to handle multiple asynchronous inside of IntentService如何处理 IntentService 内部的多个异步
【发布时间】:2015-03-03 13:54:55
【问题描述】:

我正在编写一个应用程序,它可以从多个来源多次下载 JSON 数据。每个下载都是通过回调方法异步完成的。

我的想法是使用 IntentService,因为我希望所有数据处理都在同一个线程上运行,并同时调用所有异步下载。但是由于 IntentService 一旦完成 onHandleIntent 运行就会停止,不会,我怎样才能让它等待所有异步下载完成?这就是我的 onHandleIntent 方法的外观

  @Override
  protected void onHandleIntent(Intent intent) {
       asyncTaskAWithCallback{
            //some handling of data
       }
       asyncTaskBWithCallback{
            //some handling of data
       }

       ...

       asyncTaskNWithCallback{
            //some handling of data
       }
       //Some code to wait for all callbacks to finish?
  }

【问题讨论】:

  • 我建议您使用自己的线程管理创建自己的Service,在那里您可以更好地实现自己的规则。

标签: java android asynchronous service


【解决方案1】:

添加一个循环等待计数器达到您的异步计数值 并让每个 async 增加这个 onPost 计数

【讨论】:

  • 不幸的是,这不起作用,异步回调从未被调用。
  • 怎么从来没叫过!
  • 你确定你调用了 async.execute() 吗??
  • 是的,我确定。我不知道为什么,我猜是线程问题?
  • 发布一些代码,以便我们能够弄清楚
【解决方案2】:

我最终创建了 Service 而不是 IntentService,就像 CommonWare 在评论中建议的那样。遵循example 并将数据处理放在单独的线程中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2018-08-03
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多