带ProgressDialog的请求回调防止多点

Nohttp请求回调方法(OnResponseListener),防止多次点击!废话不多说,直接上代码:

/**
 * 带ProgressDialog的请求回调防止多点
 * Created by Lyx on 2017/9/13.
 */

public abstract class OnMyresponseListenerPost implements OnResponseListener<String> {
    private ProgressDialog p;
    private WeakReference<Context> weakReference;
    private boolean isDestroy = true;

    protected OnMyresponseListenerPost(Context context) {
        weakReference = new WeakReference<Context>(context);
    }

    @Override
    public void onStart(int what) {
        p = new ProgressDialog(weakReference.get());
        p.setMessage("请稍等...");
        p.setCancelable(false);// 设置是否可以通过点击Back键取消  
        p.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条  
        p.show();

    }

    @Override
    public void onSucceed(int what, Response<String> response) {
        if (isDestroy) {
            OnSucceed(response);
        }
    }

    @Override
    public void onFailed(int what, Response<String> response) {
        if (isDestroy) {
            ToastUtils.showToast(weakReference.get(), weakReference.get().getString(R.string.network));
        }
    }

    @Override
    public void onFinish(int what) {
        p.cancel();
    }

    public abstract void OnSucceed(Response<String> response);

    //清除回调
    public void clear() {
        isDestroy = false;
    }
}
这是我的网络请求的工具类,顺便也写一下吧
/**
 * 网络请求工具类
 * Created by 诸葛 on 2017/5/12.
 */

public class HttpUtil {

    /**
     * 待缓存的请求
     *
     * @param map
     * @param url
     * @param listener
     */
    public static void get(HashMap<String, String> map, String url, OnResponseListener<String> listener) {
//        RequestQueue requestQueue = NoHttp.newRequestQueue();
        //步骤四.创建请求并进行发送, 处理服务端返回的数据
        StringRequest request = new StringRequest(url, RequestMethod.POST);
        //添加请求
        request.add(map);
        //第三步:Nohttp:设置缓存的五种模式:
        //DEFAULT是http标准协议的缓存
        // stringPostRequest.setCacheMode(CacheMode.DEFAULT);

        //REQUEST_NETWORK_FAILED_READ_CACHE请求失败返回上次缓存的数据(建议使用这种)
        request.setCacheMode(CacheMode.REQUEST_NETWORK_FAILED_READ_CACHE);
        //NONE_CACHE_REQUEST_NETWORK在没有缓存再去请求网络
        // stringPostRequest.setCacheMode(CacheMode.NONE_CACHE_REQUEST_NETWORK);

        // ONLY_READ_CACHE仅仅请求缓存,如果没有缓存就会请求失败
        //stringPostRequest.setCacheMode(CacheMode.ONLY_READ_CACHE);

        //ONLY_REQUEST_NETWORK仅仅请求网络不支持302重定向
        // stringPostRequest.setCacheMode(CacheMode.ONLY_REQUEST_NETWORK);

        //设置缓存模式, 要求在离线情况下也能正常使用软件
//        request.setCacheMode(CacheMode.NONE_CACHE_REQUEST_NETWORK);
//        requestQueue.add(0, request, listener);
        CallServer.getInstance().request(0, request, listener);
    }

    /**
     * 不带缓存的请求
     *
     * @param map
     * @param url
     * @param listener
     */
    public static void post(HashMap<String, String> map, String url, OnResponseListener<String> listener) {
//        RequestQueue requestQueue = NoHttp.newRequestQueue();
        //步骤四.创建请求并进行发送, 处理服务端返回的数据
        StringRequest request = new StringRequest(url, RequestMethod.POST);
        //添加请求
        request.add(map);
//        requestQueue.add(0, request, listener);
        CallServer.getInstance().request(0, request, listener);
    }

    //单文件上传
    public static void postImag(HashMap<String, String> map, String url, String filekey, File file, OnResponseListener<String> listener) {
//        RequestQueue requestQueue = NoHttp.newRequestQueue();
        //步骤四.创建请求并进行发送, 处理服务端返回的数据
        StringRequest request = new StringRequest(url, RequestMethod.POST);
        //添加请求
        request.add(filekey, file);
        request.add(map);
        //设置缓存模式, 要求在离线情况下也能正常使用软件
//        request.setCacheMode(CacheMode.NONE_CACHE_REQUEST_NETWORK);
//        requestQueue.add(0, request, listener);
        CallServer.getInstance().request(0, request, listener);
    }

    //多文件上传
    public static void postImags(HashMap<String, String> map, String url, ArrayList<File> file, OnResponseListener<String> listener) {
//        RequestQueue requestQueue = NoHttp.newRequestQueue();
        //步骤四.创建请求并进行发送, 处理服务端返回的数据
        StringRequest request = new StringRequest(url, RequestMethod.POST);

        //添加请求
        for (int i = 0; i < file.size(); i++) {
            String fi = "file[" + i + "]";
            request.add(fi, file.get(i));
        }
        request.add(map);
//        requestQueue.add(0, request, listener);
        CallServer.getInstance().request(0, request, listener);
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值