gpt4 book ai didi

android - 在 Android 中异步发送 HTTP GET 请求的最佳方式?

转载 作者:可可西里 更新时间:2023-11-01 18:50:08 24 4
gpt4 key购买 nike

在 Android 应用程序中,我必须对一个 URL 发出多个 GET 请求,以便将数据传输到外部服务器(这就是第三方 API 的工作方式)。

数据偶尔进来。我将这些数据存储在一个队列中,并希望在不减慢主 UI 线程的情况下将其异步发送到后台服务器。队列中的每个数据单元都需要一个 GET 请求。即使应用程序关闭,队列也必须清空。

执行此操作的最佳做​​法是什么?请发布/指导我查看代码/教程。

最佳答案

What's the best practice to do this?

这取决于“这个”是什么以及这项工作在哪里完成。

如果“this”是“异步工作”,您将以一种形式或方式使用线程:

  • 如果您的 HTTP 操作正在驱动 UI,您可以使用 AsyncTask,这样您就可以从 onPostExecute()

    安全地更新 UI/li>
  • 如果您的 HTTP 操作完全在后台进行,并且您想一次执行一个操作,请使用 IntentService,它有自己的后台线程和工作队列

  • 如果您的 HTTP 操作完全在后台进行,并且您希望一次执行一个操作,并且您担心确保设备在所有这些操作进行时保持清醒,请考虑我的 WakefulIntentService

  • 如果您的 HTTP 操作完全在后台进行,但您觉得您希望一次执行多个操作,请滚动您自己的使用 ExecutorService > 使用您自己的线程池,确保在工作完成后关闭该服务(如 IntentService 所做的那样),并确保设备通过 WakeLock 保持唤醒状态>(也许还有一个 WifiLock)

如果“this”是“HTTP GET”请求,使用:

  • HttpUrlConnection,或

  • HttpClient,或者

  • OkHttp (包装那些有额外好处的人),或

  • Retrofit (如果您的 GET 请求确实是 Web 服务调用),或者

  • Volley (如果您希望您的 HTTP 包装器代码没有文档记录、不受支持但符合 Googly)

  • 任意数量的其他第三方包装器库

如果“this”是“queue”,请使用Queue 类,或者如果您计划让多个线程同时使用它,则使用LinkedBlockingQueue

如果“this”是别的东西,我帮不了你,因为我已经厌倦了猜测。

关于android - 在 Android 中异步发送 HTTP GET 请求的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com