Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何检查Volley Request Queue是空的?请求已完成?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何检查Volley request Queue是空的?请求已完成?

完成所有请求后,我试图加载ui但它在请求响应之前加载

for (i = 1; i < obj.length; i++) {

            String apiString = myGlobalClass.getApiUrl();
            callrequest(apiString);

        }
private  callrequest(String apiString) {
        // TODO Auto-generated method stub

        request = new Stringrequest(request.Method.GET,apiString,new Response.Listener<String>() {

                    @Override
                    public void onResponse(String responsE) {
                        // TODO Auto-generated method stub


                    }
                },new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        // TODO Auto-generated method stub

                    }
                });


        queue.add(request);

    }

解决方法

Volley Lib不提供本机方法来检查请求是否已经完成,此信息由Lib的内部类中的私有属性保存. @H_674_15@您可以为此创建自己的控件.

当我需要这个功能时,我实现了以下方法来通过反射访问Currentrequests集.

我使用lib来促进这项任务. Mirror

public Boolean isPendingTorequest( final Object tag ) {

    final Object mObject = new Mirror().on( this.requestQueue ).get().field( "mCurrentrequests" );

    final Set<request<?>> mCurrentrequests = ( Set<request<?>> ) mObject;

    for ( final request<?> request : mCurrentrequests ) {

        Log.d( "tagIsPendingTorequest ","tag: " + request.getTag() );

        if ( request.getTag().equals( tag ) ) {

            Log.d( "tagIsPendingTorequest ","Pendingtag: " + request.getTag() + " mytag:" + tag );
            return true;
        }
    }

    return false;
}

但它对我没有效率,所以我决定用一个标志保留一个HashMap引用我的所有请求.

大佬总结

以上是大佬教程为你收集整理的android – 如何检查Volley Request Queue是空的?请求已完成?全部内容,希望文章能够帮你解决android – 如何检查Volley Request Queue是空的?请求已完成?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。