在项目中我正在实施“添加到收藏夹”,添加时必须在服务器数据库中记录。
我从json获得产品清单
{
"id": 37,
"name": "Apple",
"price": 205,
"photo": "~/IMG/Full/20166117138.jpg",
"favorite": false
},
如果用户将项目“添加到收藏夹 - 我会使用Volley进行POST请求。
URL?user_id=1095&product_id=37
在此POST请求之后,参数“收藏夹”将更改为 “true”
当用户将一些项目添加到收藏夹时,我正在检查连接超时我使用计时器
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);
}
}
如果我的方法实施“添加到收藏夹”不对...让我知道))
答案 0 :(得分:0)
我建议您使用CountDownTimer
,而不是RetryPolicy
实施。
你可以这样做:
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
15000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
更容易维护并且应该解决您的问题。
有关RetryPolicy
的更多信息,请查看this answer。
要显示您的Toast
,您可以执行以下操作:
@Override
public void onErrorResponse(VolleyError error) {
if(error instanceof TimeoutError || error instanceof NoConnectionError) {
Toast.makeText(mContext,"Check your internet connection",Toast.LENGTH_SHORT).show();
// ...
}
}