android - 对需要响应才能继续的 api 调用使用 Asynctasks 有什么意义吗?

标签 android android-asynctask

我觉得这个问题的答案太明显了,但我的一部分还是想问。

我正在创建一个 Android 应用程序,当用户首次启动该应用程序时,它会使用 API 发出多个 HTTP POST/GET 请求。所有这些请求都是通过在 Activity 中启动异步任务来发出的。

例如,有一个 Activity ,用户必须从从 API 检索的列表中选择一个项目。在他选择一个之后,当应用程序将选择发送到 API 以检索另一个列表时,会向用户显示一个进度条,在下一个 Activity 中,用户从该列表中选择项目。显然,在应用程序将第一个列表的选择发送给它之后从服务器收到响应之前,用户不能进入第二个列表。

在这种情况下,使用 Asynctask 发送第一个列表的选择是否有意义,因为在收到响应和下一个 Activity 之前,用户无法执行任何操作(通过显示进度条)开始了。如果我只是在主线程上进行 API 调用,是否会降低代码的复杂性?

我希望这不会太困惑。

谢谢

最佳答案

我完全理解你的疑问。好问题。产生疑问的根本原因是您认为在流程完成之前不需要与应用程序进行交互。但你真的想要。如果您可以做类似的事情,进度条将会卡住。

好吧,我们假设您甚至没有 ProgressBar。但是,处理不同的 UI 组件(例如 Spinners、EditTexts)并不是主线程的唯一职责。它应该在 Activity 生命周期中定义不同的回调。在主线程中执行大任务也会卡住回调,如 onPause()、onStop() 等。这就是“NetworkOnMainThreadException”出现的原因。

关于android - 对需要响应才能继续的 api 调用使用 Asynctasks 有什么意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44515973/

相关文章:

Android 何时使用 ContentResolver applyBatch 或 BulkInsert

java - Android,下载 .txt 文件并在内部保存

java - AsyncTask 类等待另一个 AsyncTask 类完成其进程的正确方法是什么

android - 使用 Otto 或 EventBus 之类的事件库是处理 Activity 、 fragment 和后台线程之间关系的推荐方法

android - 异步任务 : where does the return value of doInBackground() go?

java - "if block"中的语句在 "if condition"中的函数返回之前执行

java - NetBeans 并停止/中断所有异常?

android - 名称为 [DEFAULT] 的 FirebaseApp 不存在并出现错误

java - 为什么 if 条件在 AyncTasks 的 onPostExecute() 中完全无用?

java - 我的游戏不会停止显示获胜者