android - 如何确定给定请求是否正在运行?

标签 android retrofit asyncsocket

我正在考虑对我的网络层进行改造。有什么方法可以判断特定异步请求是否在任何给定时刻运行?

例如,我想知道请求是否正在运行,以便我可以在不同时间更新用户界面。我可以通过保留变量来跟踪状态来自己做到这一点,但想知道库中是否已经有一些东西可以做到这一点。

最佳答案

这是我在需要一种方法来跟踪正在运行的请求时通常会做的事情:

  • 首先,使用改造,只要您提出请求,您就可以执行以下操作:
  • 使用 EventBus 库将事件发布到您的 Activity 或 fragment 。现在,这可以在回调的 onSuccess() 方法或相同的 onError() 方法中完成。
  • 在您的 Activity 或 fragment 的 onEvent(EventClassName event) 方法中,您可以简单地检查事件中的 [isRunning] 等变量,以确保如果事件仍在运行,您可以更新 UI相应地,如果没有,则分别执行您需要执行的操作。
  • 当请求完成时,显然 isRunning 将为 false,然后您可以按照用户的预期更新 UI。
  • 我在这里推荐 EventBus 只是因为它更容易将您的应用程序代码与它分离;您可以发送不同的事件来通知您请求的不同状态的 Activity ,然后以这种方式更新您的用户界面。

你可以找到 EventBus here

希望对您有所帮助!

关于android - 如何确定给定请求是否正在运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187298/

相关文章:

android - : android. support.design.button.MaterialButton 和 com.google.android.material.button.MaterialButton 有什么不同

java - TextView onclick 方法使应用程序崩溃

retrofit - 在新的 Retrofit 2 API 中使用什么来代替 RetrofitError.Kind.NETWORK?

sockets - 自动重新连接套接字客户端的设计选择

c# - 为什么 Socket.AcceptAsync 没有触发 SocketAsyncEventArgs Completed 事件?

iOS didAcceptNewSocket 预期不同的端口号

android - startActivityForResult 中的空指针异常

java - Gradle在项目外部编译依赖项

java - 使用 Retrofit/Rxjava 进行数据绑定(bind)/实时数据处理配置更改

java - Retrofit 不会调用 onReponse 和 onFailure