針對OkHttp的封裝庫

jopen 9年前發布 | 14K 次閱讀 OkHttp Android開發 移動開發

OkHttpFinal簡介

  • 簡化OkHttp使用
  • 支持Activity和Fragment生命周期結束后終止請求
  • 添加了DownloadManager功能
  • 下載多事件回調
  • JSON反射輕松拿到結果
  • ……
  • </ul>

    OkHttpFinal使用方法:

    OkHttpFinal接口請求:

    RequestParams params = new RequestParams();
    params.put("username", mUserName);
    params.put("password", mPassword);
    params.put("file", file);
    params.put("image", inputstream);
    params.put(Constants.Params.HTTP_TASK_KEY, HTTP_TASK_KEY);
    params.putHeader("token", token);
    HttpRequest.request(Api.LOGIN, params, new BaseHttpRequestCallback<LoginResponse>() {

        @Override
        public void onStart() {
            super.onStart();
            buildProgressDialog().show();
        }
    
        @Override
        public void onSuccess(LoginResponse loginResponse) {
            super.onSuccess(loginResponse);
            toast("登錄成功");
        }
    
        @Override
        public void onFailed(LoginResponse loginResponse) {
            super.onFailed(loginResponse);
            toast(loginResponse.getMessage());
        }
    
        @Override
        public void onException(int errorCode, String msg) {
            super.onException(errorCode, msg);
            toast("網絡異常~,請檢查你的網絡是否連接后再試");
        }
        @Override
        public void onFinish() {
            super.onFinish();
            dismissProgressDialog();
        }
    });</pre><br />
    

    Activity或Frament生命周期介紹后銷毀頁面所有正在執行的請求

    //在BaseActivity或BaseFragment中添加字段
    protected final String HTTP_TASKKEY = "HttpTaskKey" + hashCode();

    //請求參數中添加key RequestParams params = new RequestParams(); params.put(Constants.Params.HTTP_TASK_KEY, HTTP_TASK_KEY);

    //在BaseActivity和BaseFragment銷毀方法中添加 HttpTaskHandler.getInstance().removeTask(HTTP_TASK_KEY);</pre>

    OKHttpFinal下載文件:

    • 添加下載

    DownloadInfo dlTaskInfo = new DownloadInfo();
    dlTaskInfo.setAppName(mGameData.getName());
    dlTaskInfo.setUrl(url);
    dlTaskInfo.setLogo(mGameData.getIconUrl());
    dlTaskInfo.setPackageName(mGameData.getPackageName());
    dlTaskInfo.setGameId(mGameData.getId());
    
    DownloadManager.getInstance(this).addTask(dlTaskInfo, null);

    • 暫停下載

      DownloadManager.getInstance(this).stopTask(info.getUrl());
    • 繼續下載

      DownloadManager.getInstance(this).restartTask(info.getUrl());
    • 添加事件回調

    DownloadManager.getInstance(this).addTaskListener(url, new DownloadListener() {
        @Override
        public void onProgress(DownloadInfo downloadInfo) {
            super.onProgress(downloadInfo);
            holder.mTvOperate.setText("暫停");
            holder.mTvDownloadState.setText("下載中");
            holder.mNumberProgressBar.setProgress(downloadInfo.getProgress());
            String downladScale = StringUtils.generateFileSize(downloadInfo.getDownloadLength()) + "/"
                    + StringUtils.generateFileSize(downloadInfo.getTotalLength());
            holder.mTvDownloadScale.setText(downladScale);
            holder.mTvDownloadSpeed.setText(StringUtils.generateFileSize(downloadInfo.getNetworkSpeed()));
        }
    
        @Override
        public void onError(DownloadInfo downloadInfo) {
            super.onError(downloadInfo);
            holder.mTvOperate.setText("繼續");
            holder.mTvDownloadState.setText("已暫停");
        }
    
        @Override
        public void onFinish(DownloadInfo downloadInfo) {
            super.onFinish(downloadInfo);
            holder.mTvDownloadState.setText("下載完成");
            holder.mTvOperate.setText("安裝");
        }
    });

    添加全局事件回調java DownloadManager.getInstance(this).setGlobalDownloadListener(new DownloadListener());...

    項目主頁:http://www.baiduhome.net/lib/view/home/1442026725180

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!