我正在尝试在 Android 上探索 Retrofit+OkHttp。这是我在网上找到的一些代码:
RestAdapter restAdapter = new RestAdapter.Builder().setExecutors(executor, executor)
.setClient(new OkClient(okHttpClient))
.setServer("blah").toString())
.build();
如果我不使用执行程序服务,我的代码会在主线程上运行吗?我应该在新线程中发出网络请求吗?
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 集成是实验性的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)