我正在尝试在 Android 上探索 Retrofit+OkHttp。这是我在网上找到的一些代码:

RestAdapter restAdapter = new RestAdapter.Builder().setExecutors(executor, executor)
.setClient(new OkClient(okHttpClient))
.setServer("blah").toString())
.build();

如果我不使用执行程序服务,我的代码会在主线程上运行吗?我应该在新线程中发出网络请求吗?

有帮助吗?

解决方案

返回值的方法同步。

@GET("/user/{id}/asset")
Asset getUserAsset(@Path("id") int id);
. 要做异步,您需要的只是添加回调。

@GET("/user/{id}/asset")
void getUserAsset(@Path("id") int id, Callback<Asset> cb);
.

希望这有帮助。

问候!

其他提示

Retrofit 方法可以声明为同步或异步执行。

具有返回类型的方法将同步执行。

@GET("/user/{id}/photo")
Photo getUserPhoto(@Path("id") int id);

异步执行要求方法的最后一个参数是 Callback.

@GET("/user/{id}/photo")
void getUserPhoto(@Path("id") int id, Callback<Photo> cb);

在 Android 上,回调将在主线程上执行。对于桌面应用程序,回调将在执行 HTTP 请求的同一线程上发生。

Retrofit 还集成了 RxJava 以支持返回类型为 rx.Observable

@GET("/user/{id}/photo")
Observable<Photo> getUserPhoto(@Path("id") int id);

可观察请求是异步订阅的,并在执行 HTTP 请求的同一线程上观察。在不同的线程上观察(例如Android的主线程)调用 observeOn(Scheduler) 在返回的 Observable.

笔记:RxJava 集成是实验性的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top