gpt4 book ai didi

android - 在 Retrofit 中, "callbacks will happen on the same thread that executed the HTTP request"是什么意思?

转载 作者:行者123 更新时间:2023-11-29 17:39:55 24 4
gpt4 key购买 nike

Retrofit Documentation说明如下:

For desktop applications callbacks will happen on the same thread that executed the HTTP request.

我试图通过研究 Retrofit 源代码(特别是 RestAdapter.java )并查看许多其他类似的 SO 问题(例如 this )来理解这一点,但我仍然感到困惑。

如果我有一个调用 void getUserPhoto(@Path("id") int id, Callback<Photo> cb) 的后台线程(例如)这个库究竟是如何在该线程上执行回调的?

最佳答案

如果您将相同的执行器传递给 RestAdapter,假设:

ExecutorService backgroundExecutor = Executors.newCachedThreadPool();
restAdapterBuilder.setExecutors(backgroundExecutor, backgroundExecutor);

然后回调 Runnable 将在这个后台执行器上执行,这意味着您将在同一个线程中接收回调,否则线程将被关闭或重用,并且回调将发生在与当前线程不同的线程上一个执行http请求的。

Retrofit检查你运行的是桌面应用还是安卓应用时,它会检查是否有来自android sdk的present package,然后获取http请求和回调的executor(s)将会发生,即如果您在 Android 上运行,它将在主线程上运行回调 Runnable。如果您在非 Android 上运行,它将获得同步执行器(与用于 http 请求的相同),除非您不传递其他内容。这些是构建的默认平台设置,如果你不自己做的话。

关于android - 在 Retrofit 中, "callbacks will happen on the same thread that executed the HTTP request"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107021/

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