Java 改造2异步下载数据并获得进度条
我需要在从我的Web服务下载东西时显示一个进度条,因为我需要在下载完成时进行片段转换。我尝试过很多不同的事情,但我还是在开始时绊倒了。我在下载完成之前完成了转换 有人能给我举个例子或者给我一个解决这个问题的方向吗Java 改造2异步下载数据并获得进度条,java,android,retrofit2,Java,Android,Retrofit2,我需要在从我的Web服务下载东西时显示一个进度条,因为我需要在下载完成时进行片段转换。我尝试过很多不同的事情,但我还是在开始时绊倒了。我在下载完成之前完成了转换 有人能给我举个例子或者给我一个解决这个问题的方向吗 public void efetuarLogin() { loadProgress.setVisibility(View.VISIBLE); final iRequestsTramita requestsTramita = TramitaService.getInst
public void efetuarLogin() {
loadProgress.setVisibility(View.VISIBLE);
final iRequestsTramita requestsTramita = TramitaService.getInstance().usarServico();
Call<RespostaTramita> callCapturarUG = requestsTramita.getResposta(new LoginTramita(userLogin,userPass));
callCapturarUG.enqueue(new Callback<RespostaTramita>() {
@Override
public void onResponse(Call<RespostaTramita> call, Response<RespostaTramita> response) {
//loadProgress.setVisibility(View.GONE);
if (response.isSuccessful()) {
doing something...
baixarObrasGestor();
loadProgress.setVisibility(View.GONE);
} else {
doing something...
}
}
@Override
public void onFailure(Call<RespostaTramita> call, Throwable t) {
...
}
});
}
public void baixarObrasGestor(){
List<Gestao> listaIdRequisicao = bancoDadosController.gerarListaRequisicaoGeoPB(userLogin);
iRequestsGeoPB requestsGeoPB = GeoPBService.getInstance().usarServico();
//make some requests to webservice
for (Gestao gestao : listaIdRequisicao){
...
Call<List<RespostaGeoPB>> callBaixarObras = requestsGeoPB.baixarObrasGestor(headers, paramRequisicao);
callBaixarObras.enqueue(new Callback<List<RespostaGeoPB>>() {
@Override
public void onResponse(Call<List<RespostaGeoPB>> call, Response<List<RespostaGeoPB>> response) {
...doing something
}
@Override
public void onFailure(Call<List<RespostaGeoPB>> call, Throwable t) {
Log.d("TESTE", "erro: " + t.getMessage());
}
});
}
selecionaUG(); //do the fragment transition
}
public void efetuarLogin(){
loadProgress.setVisibility(View.VISIBLE);
最终iRequestsTramita requestsTramita=TramitaService.getInstance().usarServico();
调用callCapturarUG=requestsTramita.getResposta(新的LoginTramita(userLogin,userPass));
callCapturarUG.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
//loadProgress.setVisibility(View.GONE);
if(response.issusccessful()){
做点什么。。。
baixarObrasGestor();
loadProgress.setVisibility(View.GONE);
}否则{
做点什么。。。
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
...
}
});
}
公共无效baixarObrasGestor(){
List listaIdRequisicao=bancoDadosController.gerarListaRequisicaoGeoPB(userLogin);
iRequestsGeoPB requestsGeoPB=GeoPBService.getInstance().usarServico();
//向webservice发出一些请求
对于(盖世太保:listaIdRequisicao){
...
调用callBaixarObras=requestsGeoPB.baixarObrasGestor(headers,pararequisicao);
callBaixarObras.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
…做点什么
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.d(“TESTE”,“erro:+t.getMessage());
}
});
}
selecionaUG();//执行片段转换
}
我个人覆盖回调
这为您提供了包含所有自定义事件的选项
public抽象类RetryCallback实现回调{…}
如果您只想知道加载何时完成,那么skleton就足够了。但请确保您的onResponse
或onFailure
不会引发异常。我经常看到,当出现一些异常时,会在没有通知的情况下进行转换。将您的代码打包到中,然后试试catch
,看看它是否是问题案例
public void onResponse(Call<T> call, Response<T> response) {
if(!response.isSuccessful()){
// ....
loadingComplete();
return;
}
// ...
loadingComplete();
}
@Override
public void onFailure(Call<T> call, Throwable t) {
// ...
loadingComplete();
}
public void onResponse(调用、响应){
如果(!response.issusccessful()){
// ....
加载完成();
返回;
}
// ...
加载完成();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
// ...
加载完成();
}
您能进一步解释一下您到目前为止所做的尝试吗?如果您提供了一个代码片段,请确保它尽可能小,以允许其他人重现问题-避免包含任何与当前问题无关的内容。我正在尝试创建一个接口,以便调用回调以显示下载进度。当我得到100%时,我将调用函数进行转换其他尝试:-将转换函数放在最后一个for之外-在转换之前等待-在转换之前睡眠我猜你得到的不是代码400而是其他东西..我得到的是正确的数据,但转换是在下载完成之前发生的。不管我把代码转换放在哪里,我都会尝试你的例子@Avezan。我只是不明白这是从哪里来的loadingComplete()
只是为了让您理解您想在总结代码中添加的任何内容。比如loadProgress.setVisibility(View.GONE)代码>