package quickutils.core.rest;
import android.content.Context;
import android.text.TextUtils;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import java.util.concurrent.TimeUnit;
public class NetworkHelper {
private static final String TAG = NetworkHelper.class.getSimpleName();
private static volatile NetworkHelper instance;
public static NetworkHelper getInstance(Context context) {
if (instance == null) {
synchronized (NetworkHelper.class) {
if (instance == null) {
final NetworkHelper tmp = new NetworkHelper(context);
instance = tmp;
}
}
}
return instance;
}
private RequestQueue mRequestQueue;
private final Context context;
public NetworkHelper(Context context) {
this.context = context;
}
public DefaultRetryPolicy retryPolicy() {
return new DefaultRetryPolicy((int) TimeUnit.SECONDS.toMillis(20),
0,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(context, new OkHttpStack());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req, String tag) {
// set the default tag if tag is empty
req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
req.setRetryPolicy(retryPolicy());
getRequestQueue().add(req);
}
public <T> void addToRequestQueue(Request<T> req) {
req.setTag(TAG);
req.setRetryPolicy(retryPolicy());
getRequestQueue().add(req);
}
public void cancelPendingRequests(Object tag) {
if (mRequestQueue != null) {
mRequestQueue.cancelAll(tag);
}
}
}