当前位置: 首页 > 面试题库 >

如何在Android中有效管理多个异步任务

仉姚石
2023-03-14
问题内容

我有一个场景,我将必须对服务器进行六个http调用才能获取六个不同项目的数据。这些服务器调用不能合并,并且它们就是那样。例如:如果您需要GOOGLE的报价信息,则向服务器发送请求,以请求google的报价信息。接下来,如果您需要Yahoo,则可以发起另一个http调用,依此类推。

情况如下:

  1. 现在,我的最终用户想要比较6家不同的公司。
  2. 正如我提到的那样,我不可避免地要使用6个异步任务进行6个http调用。
  3. 收到每个异步任务响应后,我将使用新数据刷新UI。
  4. 如果我在很短的时间内刷新UI 6次,那将是糟糕的UI体验。
  5. 它给我的UI带来了不希望的闪烁效果。

我的问题:

  1. 在获得所有6个异步任务响应之前,如何阻止刷新UI?
  2. 我了解每个任务都是相互独立的。我是否应该运行while循环并等待直到获得所有响应?
  3. 有没有比while循环更好的方法了,因为如果任何一个呼叫都没有响应,那么我将永远等待。

注意:我猜Android 1.6+确实可以并行执行Async任务。

这更多是一个设计问题,对此我将不胜感激。

提前致谢


问题答案:

我发现此解决方案更适合我的问题。此链接描述了建立此链接的几种方法。1. ExecutorService 2.
ExecutoreService和CountDownLatch

ExecutoreService和CountDownLatch



 类似资料:
  • 我有三项任务。任务1、任务2和任务3。task1和task2是异步任务,即它们同时执行任务,返回完成结果的时间不可预测。最初,我希望task1和task2同时执行,并在得到结果后执行task3。 我设计的结构如上所述,但我总是得到不好的结果,比如如果task2是一个url发布请求,使用afnet,我不能得到成功块参与。 任何帮助我的人我都会感激的。

  • React中组件A里有个获取配置数据的异步请求,列表中多个组件A就会触发多个相同的异步请求,期望是等到第一个异步请求回来进行数据缓存,剩下组件直接读取缓存来获取配置数据。 我想了一下,使用axios的拦截器把请求拦截下来处理,但是如何让剩下的组件进行等待呢?或者有什么其他思路?

  • 一年前,我在android上做了一些事情,我想知道是否有可能把它转换成java。 来自android的代码: 在给定参数搜索的情况下,搜索SQL数据库是非常困难的。 如有任何答复,将不胜感激。

  • 问题内容: 我想同时下载一些文件,例如100个文件。因此,我决定将下载线程添加到调度队列中,GCD会调整同时运行多少个线程。 这里的问题是:中的块将立即完成,因为它将在另一个线程上运行。因此,如果长度为100,它将立即创建100个线程。 如何配置块以等待下载任务完成?我不想使用,因为它只允许同时运行一个下载任务。 问题答案: 要扩展Abhinav的答案,您应该: 使用创建一个组。 在开始每个下载任

  • 这是在一次Android采访中被问到的。有人问我是否可以从异步任务 1 的 doInBackground() 方法(让它成为 Task1)启动另一个异步任务(让它成为 Task2)。我浏览了文档,其中说了以下内容: 必须在UI线程上创建任务实例。 必须在 UI 线程上调用 execute(Params...)。 根据这些陈述,我认为从另一个任务的后台方法启动一个任务是不可能的。此外,async任务

  • 英文原文:http://emberjs.com/guides/understanding-ember/managing-asynchrony/ Ember管理异步 许多Ember的概念都是用来管理异步行为的,比如绑定和计算属性。 Ember之外 本文将从使用jQuery和其他基于事件的MVC框架入手,分析管理异步行为的方法。 下面采用一个Web应用中非常普遍的异步行为作为例子,就是发起一个Ajax