【问题标题】:Android Volley And AsyncTaskAndroid Volley 和 AsyncTask
【发布时间】:2021-09-27 03:12:10
【问题描述】:

我一直在读到我们在使用 volley 时不需要使用 AsyncTask。不过,我有一个问题,我的活动中的一个按钮单击会触发 HTTP 请求。现在,如果我的应用程序关闭,volley 仍然能够处理该请求。

当我再次启动我的应用程序时,是否可以确定我之前的 HTTP 请求是否已发送。

响应会发生什么?我能否捕捉到响应并进行一些数据库更新(本地到应用程序)?

执行此类 http 请求的正确设计是什么?

另外,如果我想在应用程序未启动时发出一些 HTTP 请求,我可以不使用后台任务通过 volley 完成所有这些吗?

【问题讨论】:

  • 如果您想在应用程序不在前台时进行一些 http 调用,甚至在用户在运行时离开应用程序时确保处理响应,我建议将所有网络功能打包到一些 Service 中(尤其是 @ 987654322@)

标签: android android-volley


【解决方案1】:

您不需要为 Volley 使用 AsyncTask 或 Thread,因为 Volley 会为您做这些。所以这是正确的。

当您说您的应用已关闭时,您的意思是应用在后台,还是应用已终止?在第一种情况下,请求将继续。在第二种情况下,它不会,并且任何传入的响应都将在操作系统层被忽略,因为套接字上没有侦听应用程序。还要记住,不在前台的应用程序可以随时被操作系统杀死。

当您的应用未启动时,您无法发送 HTTP 请求。您可以在 JobScheduler 或 WorkManager 项中执行此操作,但随后您的应用程序启动,您只是没有显示 UI。

【讨论】:

  • 所以如果我想在应用程序未关闭但处于后台时处理响应,我应该在某些服务中使用 Volley 吗?
  • @Kraken Volley 可以工作,任何其他 http 库也可以。出于多种原因,我强烈推荐 Retrofit 而不是 Volley,但两者都可以胜任。
  • 至于一些服务——主要问题是——你打算在后台运行多久,你会发出多少请求?如果它只有几秒钟和一个请求,您可能可以在您的活动中发送它。几分钟后,一项服务将起作用。如果 15 分钟后,您需要前台服务。如果一个小时后,或者您想不断地轮询更新,您真的需要重新考虑您是如何执行此操作的,也许 JobScheduler 或 WorkManager 是适合您的工具。或推送通知。
猜你喜欢
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多