我有问题, 如何等待来自API的数据?
我会这样写代码:
testProguardFiles
我将有一个列表供我在任何地方使用。 我不想覆盖任何方法。
DataAPI:
List<User> userList = dataAPI.getAllUser();
UserService
public class DataAPI {
public DataAPI(){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
userAPI = retrofit.create(UserService.class);
public class DataAPI {
[...]
private UsertService userAPI;
public DataAPI(){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
userAPI = retrofit.create(UserService.class);
}
Observable<List<User>> getAllUser() {
return userAPI.getAllUser();
}
}
答案 0 :(得分:0)
可以使用rxJava完成,以获取更多详细信息:read
答案 1 :(得分:0)
您只需要设置超时并增加超时,即可等待服务的响应。 (优先考虑writeTimeout)
OkHttpClient client = new OkHttpClient.Builder();
client .connectTimeout(10, TimeUnit.SECONDS);
client .writeTimeout(30, TimeUnit.SECONDS);
client .readTimeout(40, TimeUnit.SECONDS);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://api.yourapp.com/")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
答案 2 :(得分:0)
@Kubek,您需要订阅的是可观察对象。 您可能应该做的是:
userAPI.getAllUser()
.subscribeOn(Schedulers.IO)
.observeOn(AndroidSchedulers.Main)
.subscribe(
// do some stuff
)
有关如何使用订阅方法的文档,请参见:http://reactivex.io/documentation/operators/subscribe.html