Android 互联网连接4G和2G时对截击请求的不同响应

Android 互联网连接4G和2G时对截击请求的不同响应,android,android-volley,Android,Android Volley,在项目中,我正在实现“添加到收藏夹”,添加时必须记录在服务器数据库中。 我正在从json获取产品列表 { "id": 37, "name": "Apple", "price": 205, "photo": "~/IMG/Full/20166117138.jpg", "favorite": false }, 如果用户将项目“添加到收藏夹”-我正在使用截击发送POST请求 URL?user_id=1095&product_id=37 此POS

在项目中,我正在实现“添加到收藏夹”,添加时必须记录在服务器数据库中。 我正在从json获取产品列表

{
    "id": 37,
    "name": "Apple",
    "price": 205,
    "photo": "~/IMG/Full/20166117138.jpg",
    "favorite": false
  }, 
如果用户将项目“添加到收藏夹”-我正在使用截击发送POST请求

URL?user_id=1095&product_id=37
此POST请求后,参数“收藏夹”将更改为“真”

当用户将某些项目添加到收藏夹时,我正在使用计时器检查连接超时

 waitTimer = new CountDownTimer(15000,300) {
                        public void onTick(long millisUntilFinished) {
                        }
                        public void onFinish() {
                            Toast.makeText(mContext,"Check connecting to internet ",Toast.LENGTH_SHORT).show();
                        }
                    }.start();
15秒后,如果手机未连接到互联网,我会显示消息“检查连接到互联网”。若移动设备已连接并从服务器收到响应,则计时器将停止并将项目添加到收藏夹,更改图标

问题:当用户使用WI-FI或更快的移动互联网连接时,所有这些都可以正常工作,但当互联网连接较弱时,尽管请求来自服务器,但仍会显示消息“检查连接到互联网”

我正在使用
RecyclerView

public class PrudactAdapterC extends RecyclerView.Adapter<PrudactAdapterC.PrudactViewHolder> {
@Override
    public void  onBindViewHolder(final PrudactViewHolder prudactViewHolder, final int i) {
    prudactViewHolder.btn_favorite.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                prudactViewHolder.btn_favorite.setEnabled(false);
                prudactViewHolder.ll_favorite.setEnabled(false);
                if (p.getFav()==false){

                    myFadeInAnimation = AnimationUtils.loadAnimation(mContext, R.anim.fade_in);
                    prudactViewHolder.btn_favorite.startAnimation(myFadeInAnimation);

                   waitTimer = new CountDownTimer(15000,300) {
                        public void onTick(long millisUntilFinished) {
                        }
                        public void onFinish() {
                            Toast.makeText(mContext,"Check connecting to internet ",Toast.LENGTH_SHORT).show();

                            prudactViewHolder.btn_favorite.clearAnimation();
                            myFadeInAnimation.cancel();

                            prudactViewHolder.btn_favorite.setEnabled(true);
                            prudactViewHolder.ll_favorite.setEnabled(true);

                            /*p.setFav(false);
                            prudactViewHolder.btn_favorite.setBackgroundResource(R.drawable.icon_favorite_out);*/
                        }
                    }.start();

                    addToFav(p.getId(), prudactViewHolder, p);

                }

                else {

                   //

                }
            }
        });
        }

         void addToFav(final int id, final PrudactViewHolder prudactViewHolder, final PrudactModel p){

        String url = URLADD + "userid="+getClientId()+"&tovarid="+id;

        StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        if (response.equals("1"))
                        {
                            if(waitTimer != null) {
                                waitTimer.cancel();
                                waitTimer = null;
                            }

                            prudactViewHolder.btn_favorite.clearAnimation();
                            myFadeInAnimation.cancel();

                            prudactViewHolder.btn_favorite.setBackgroundResource(R.drawable.icon_favorite_in);
                            p.setFav(true);

                            prudactViewHolder.ll_favorite.setEnabled(true);
                            prudactViewHolder.btn_favorite.setEnabled(true);

                        }
                        else  {

                            if(waitTimer != null) {
                                waitTimer.cancel();
                                waitTimer = null;
                            }

                            prudactViewHolder.btn_favorite.clearAnimation();
                            myFadeInAnimation.cancel();

                         /*   prudactViewHolder.btn_favorite.setBackgroundResource(R.drawable.icon_favorite_out);
                            p.setFav(false);*/

                            prudactViewHolder.ll_favorite.setEnabled(true);
                            prudactViewHolder.btn_favorite.setEnabled(true);
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(mContext,"Check connecting to internet",Toast.LENGTH_SHORT).show();
                        if(waitTimer != null) {
                            waitTimer.cancel();
                            waitTimer = null;
                        }

                        prudactViewHolder.btn_favorite.clearAnimation();
                        myFadeInAnimation.cancel();

//                        prudactViewHolder.btn_favorite.setBackgroundResource(R.drawable.icon_favorite_out);
//                        p.setFav(false);

                        prudactViewHolder.ll_favorite.setEnabled(true);
                        prudactViewHolder.btn_favorite.setEnabled(true);


                    }
                }){
            @Override
            protected Map<String,String> getParams(){
                Map<String,String> params = new HashMap<String, String>();
                return params;
            }
        };
                 RequestQueue requestQueue = Volley.newRequestQueue(mContext);
        requestQueue.add(stringRequest);
    }

        }
公共类prudatapterc扩展了RecyclerView.Adapter{
@凌驾
BindViewHolder上的公共无效(最终PrudactViewHolder PrudactViewHolder,最终int i){
prudatviewholder.btn_favorite.setOnClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(视图v){
prudatviewholder.btn_favorite.setEnabled(false);
prudatviewholder.ll_favorite.setEnabled(false);
if(p.getFav()==false){
myFadeInAnimation=AnimationUtils.loadAnimation(mContext,R.anim.fade_-in);
Prudatviewholder.btn_favorite.startAnimation(myFadeInAnimation);
waitTimer=新的倒计时(15000300){
公共void onTick(长毫秒未完成){
}
公共无效onFinish(){
Toast.makeText(mContext,“检查连接到internet”,Toast.LENGTH_SHORT.show();
prudatviewholder.btn_favorite.clearAnimation();
myFadeInAnimation.cancel();
prudatviewholder.btn_favorite.setEnabled(true);
prudatviewholder.ll_favorite.setEnabled(true);
/*p、 setFav(假);
prudatviewholder.btn_favorite.setBackgroundResource(R.drawable.icon_favorite_out)*/
}
}.start();
addToFav(p.getId(),prudatviewholder,p);
}
否则{
//
}
}
});
}
void addToFav(最终int id、最终PrudactViewHolder、最终PrudactViewHolder、最终PrudactModel p){
字符串url=URLADD+“userid=“+getClientId()+”&tovarid=“+id;
StringRequest StringRequest=新的StringRequest(Request.Method.POST,url,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
如果(响应等于(“1”))
{
if(waitTimer!=null){
waitTimer.cancel();
waitTimer=null;
}
prudatviewholder.btn_favorite.clearAnimation();
myFadeInAnimation.cancel();
prudatviewholder.btn_favorite.setBackgroundResource(R.drawable.icon_favorite_in);
p、 setFav(真);
prudatviewholder.ll_favorite.setEnabled(true);
prudatviewholder.btn_favorite.setEnabled(true);
}
否则{
if(waitTimer!=null){
waitTimer.cancel();
waitTimer=null;
}
prudatviewholder.btn_favorite.clearAnimation();
myFadeInAnimation.cancel();
/*prudatviewholder.btn_favorite.setBackgroundResource(R.drawable.icon_favorite_out);
p、 setFav(假)*/
prudatviewholder.ll_favorite.setEnabled(true);
prudatviewholder.btn_favorite.setEnabled(true);
}
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(mContext,“检查连接到internet”,Toast.LENGTH_SHORT.show();
if(waitTimer!=null){
waitTimer.cancel();
waitTimer=null;
}
prudatviewholder.btn_favorite.clearAnimation();
myFadeInAnimation.cancel();
//prudatviewholder.btn_favorite.setBackgroundResource(R.drawable.icon_favorite_out);
//p.setFav(假);
prudatviewholder.ll_favorite.setEnabled(true);
prudatviewholder.btn_favorite.setEnabled(true);
}
}){
@凌驾
受保护的映射getParams(){
Map params=新的HashMap();
返回参数;
}
};
RequestQueue RequestQueue=Volley.newRequestQueue(mContext);
添加(stringRequest);
}
}

如果我实现“添加到收藏夹”的方法不正确。。。让我知道)我建议您使用
RetryPolicy
而不是
CountDownTimer
实现

你可以做点什么
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
    15000, 
    DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
@Override
public void onErrorResponse(VolleyError error) {
    if(error instanceof TimeoutError || error instanceof NoConnectionError) {
        Toast.makeText(mContext,"Check your internet connection",Toast.LENGTH_SHORT).show();

        // ...
    }
}