【问题标题】:Does Volley execute UI thread operations when my app comes to the foreground?当我的应用程序进入前台时,Volley 是否执行 UI 线程操作?
【发布时间】:2018-09-20 21:17:26
【问题描述】:

我有一个调用 Volley 库的 requestQueue.add 方法的按钮。在我调用的 onResponse 方法中:

    popupBox.display(getString(R.string.successfulRegistration), false, true); 

Display 方法,显示一个弹出窗口,因此必须在 UI 线程中调用。

我在onResponse方法的开头放了一个断点。

点击按钮后立即切换到另一个应用程序并将我的应用程序发送到后台。

IDE 在断点处停止,我从服务器得到答案,但我的应用仍在后台,没有异常错误

大约一分钟后,我将我的应用程序带到前台。之后会弹出消息窗口。

这是否意味着,我不需要检查是否可以在 onResponse 方法中执行与 UI 线程相关的操作,因为 volley 会处理它?

【问题讨论】:

  • 在 volley 的 ui 线程上调用响应方法
  • 然后 Volley 等到应用程序进入前台?
  • 我不认为 volley 对此负责,因为它的工作是在调​​用 onResponse() 后完成的。这可能由android自己处理

标签: android android-volley


【解决方案1】:

onResponseonErrorResponse 默认在主线程上调用,除非您尝试从其他线程调用它们。 Volley 在非 ui 线程(非 UI 阻塞)上进行 Api 调用。 Volley 不会照顾你的生命周期。因此,如果您在活动中进行 api 调用并关闭该活动,则会收到回调。因此,您应该检查活动是否在前台。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多