NoHttp使用小结

  • 配置信息

    • 当底层使用okhttp时,配置如下代码

        compile 'com.yanzhenjie.nohttp:okhttp:1.1.0'
      
    • 当底层使用HttpURLConnection时,配置如下代码

        compile 'com.yolanda.nohttp:nohttp:1.1.0'
      
  • 在application中初始化【在清单文件中队application进行name标签声明】

      NoHttp.initialize(this);
    
  • 权限添加

      
      
      
      
      
    
  • 使用步骤:

    • 1 创建请求队列【建议设置为单例模式,默认线程池为3】

        RequestQueue requestQueue = NoHttp.newRequestQueue();   
      
    • 2 数据请求:

      • 1 字符串类型请求

          //创建请求要求
          Request stringRequset = NoHttp.createStringRequest("https://www.so.com", RequestMethod.GET);
          
          //添加监听结果
          OnResponseListener listener = new OnResponseListener() {
              @Override
              public void onStart(int what) {
              }
        
              @Override
              public void onSucceed(int what, Response response) {
                  Log.e(TAG,Thread.currentThread().getName() +  "onSucceed:  " + response.get());
              }
        
              @Override
              public void onFailed(int what, Response response) {
              }
        
              @Override
              public void onFinish(int what) {
              }
          };
          //添加任务
          queue.add(0,stringRequset,listener);    
        
      • 2 加载图片

          Request requeset= NoHttp.createImageRequest("http://p2.so.qhmsg.com/sdr/1365_768_/t01c9a24439f573d6cc.jpg",RequestMethod.GET);
          OnResponseListener listener = new OnResponseListener() {
              @Override
              public void onStart(int what) {
              }
        
              @Override
              public void onSucceed(int what, Response response) {
                  iv.setImageBitmap(response.get());
              }
        
              @Override
              public void onFailed(int what, Response response) {
              }
        
              @Override
              public void onFinish(int what) {
              }
          };
          //设置缓存模式
          requeset.setCacheMode(CacheMode.REQUEST_NETWORK_FAILED_READ_CACHE);
          queue.add(1,requeset,listener);     
        
      • 3 下载文件

          //单独的一个任务队列
          DownloadQueue downQueue = NoHttp.getDownloadQueueInstance();
          DownloadRequest request = NoHttp.createDownloadRequest("http://p2.so.qhmsg.com/sdr/1365_768_/t01c9a24439f573d6cc.jpg","/mnt/sdcard/photo",false);
        
          DownloadListener listener= new DownloadListener() {
              @Override
              public void onDownloadError(int what, Exception exception) {
                  Log.e(TAG, "onDownloadError:  " + Thread.currentThread().getName() + exception.getMessage());
              }
        
              @Override
              public void onStart(int what, boolean isResume, long rangeSize, Headers responseHeaders, long allCount) {
                  Log.e(TAG, "onStart:  "+Thread.currentThread().getName());
              }
        
              //更新进度
              @Override
              public void onProgress(int what, int progress, long fileCount) {
                  Log.e(TAG, "onProgress:  "+progress);
              }
        
              @Override
              public void onFinish(int what, String filePath) {
                  Toast.makeText(MainActivity.this, Thread.currentThread().getName()+"" + filePath, Toast.LENGTH_SHORT).show();
                  Log.e(TAG, "onFinish:  " + filePath);
                  Bitmap bitmap = BitmapFactory.decodeFile(filePath);
                  iv1.setImageBitmap(bitmap);
              }
        
              @Override
              public void onCancel(int what) {
              }
          };
          downQueue.add(0,request,listener);
        
  • 未完待续...

  • 注意:

    • 返回结果可以使用response.get()获得
    • 详细使用参看GitHub项目地址

你可能感兴趣的:(NoHttp使用小结)