Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 改造2异步下载数据并获得进度条_Java_Android_Retrofit2 - Fatal编程技术网

Java 改造2异步下载数据并获得进度条

Java 改造2异步下载数据并获得进度条,java,android,retrofit2,Java,Android,Retrofit2,我需要在从我的Web服务下载东西时显示一个进度条,因为我需要在下载完成时进行片段转换。我尝试过很多不同的事情,但我还是在开始时绊倒了。我在下载完成之前完成了转换 有人能给我举个例子或者给我一个解决这个问题的方向吗 public void efetuarLogin() { loadProgress.setVisibility(View.VISIBLE); final iRequestsTramita requestsTramita = TramitaService.getInst

我需要在从我的Web服务下载东西时显示一个进度条,因为我需要在下载完成时进行片段转换。我尝试过很多不同的事情,但我还是在开始时绊倒了。我在下载完成之前完成了转换

有人能给我举个例子或者给我一个解决这个问题的方向吗

 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)