• 第三方框架之ThinkAndroid 学习总结(二)


    上文记录了一些ThinkAndroid常用的模块,本文继续介绍ThinkAndroid中的网络化模块。

    按照惯例先上Github原文地址:https://github.com/white-cat/ThinkAndroid


    一、Http模块使用方法:

    •   异步get方法
    1. 实例化AsyncHttpClient对象
    2. 调用异步get方法 传入(String url ,new AsyncHttpResponseHandler方法)
    3. 实现onStart()、onSuccess()、onFailure()、onFinish()方法
    AsyncHttpClient client = new AsyncHttpClient();
            client.get("http://www.thinkandroid.cn/", new AsyncHttpResponseHandler()
            {
                @Override
                public void onSuccess(String content)
                {
                    // TODO Auto-generated method stub
                    super.onSuccess(content);
                    TALogger.d(LoginActivity.this, content);
                }
                @Override
                public void onStart()
                {
                    // TODO Auto-generated method stub
                    super.onStart();
                }
                @Override
                public void onFailure(Throwable error)
                {
                    // TODO Auto-generated method stub
                    super.onFailure(error);
                }
                @Override
                public void onFinish()
                {
                    // TODO Auto-generated method stub
                    super.onFinish();
                }
            });
    •   同步get方法
    1. 实例化TAsyncHttpClient对象
    2. 调用异步get方法 传入(String url ,new AsyncHttpResponseHandler方法)
    3. 实现onStart()、onSuccess()、onFailure()、onFinish()方法
    TASyncHttpClient client = new TASyncHttpClient();
        client.get("http://www.thinkandroid.cn/", new AsyncHttpResponseHandler()
            {
                @Override
                public void onSuccess(String content)
                {
                    // TODO Auto-generated method stub
                    super.onSuccess(content);
                    TALogger.d(LoginActivity.this, content);
                }
                @Override
                public void onStart()
                {
                    // TODO Auto-generated method stub
                    super.onStart();
                }
                @Override
                public void onFailure(Throwable error)
                {
                    // TODO Auto-generated method stub
                    super.onFailure(error);
                }
                @Override
                public void onFinish()
                {
                    // TODO Auto-generated method stub
                    super.onFinish();
                }
            });
    • 使用http模块上传文件 或者 提交数据 到服务器(post方法、异步)类似于前面的Get方法

    1. 实例化AsyncHttpClient对象
    2. 实例化RequestParams对象,并put添加键值对参数
    3. 调用异步post方法 传入(String url ,new AsyncHttpResponseHandler方法)
    4. 实现onStart()、onSuccess()、onFailure()、onFinish()方法
    RequestParams params = new RequestParams();
          params.put("username", "white_cat");
              params.put("password", "123456");
              params.put("email", "2640017581@qq.com");
              params.put("profile_picture", new File("/mnt/sdcard/testpic.jpg")); // 上传文件
              params.put("profile_picture2", inputStream); // 上传数据流
              params.put("profile_picture3", new ByteArrayInputStream(bytes)); // 提交字节流
            client.post("http://www.thinkandroid.cn/", new AsyncHttpResponseHandler()
            {
                @Override
                public void onSuccess(String content)
                {
                    // TODO Auto-generated method stub
                    super.onSuccess(content);
                    TALogger.d(LoginActivity.this, content);
                }
                @Override
                public void onStart()
                {
                    // TODO Auto-generated method stub
                    super.onStart();
                }
                @Override
                public void onFailure(Throwable error)
                {
                    // TODO Auto-generated method stub
                    super.onFailure(error);
                }
                @Override
                public void onFinish()
                {
                    // TODO Auto-generated method stub
                    super.onFinish();
                }
            });
        }
    • 同理使用http模块上传文件 或者 提交数据 到服务器(post方法、同步)

    • 使用http下载文件:支持断点续传,随时停止下载任务 或者 开始任务

    1. 实例化AsyncHttpClient对象
    2. 实例化FileHttpResponseHandler对象,并传入参数文件的缓存路径
    3. 实现onProgress()、onSuccess()、onFailure())方法
    4. fileHttpResponseHandler.setInterrupt(false);为停止暂停的方法 otherwise 为开启下载暂停的方法
    5. 调用syncHttpClient的download(url,fileHttpResponseHandler);方法,传入url地址及FileHttpResponseHandler对象

    ps:一般在onProgress里执行处理下载进度,速度等操作;

    实例代码:

    • 单线程、多任务下载

    1. 实例化DownLoadManager对象
    2. 调用addHandler方法并传入下载地址
    3. 调用下载回调方法并实现OnLoading()、onAdd 等方法
    4. 调用pauseHandler暂停下载任务

    实例代码如下:

    final DownloadManager mDownloadManager = DownloadManager.getDownloadManager();

      mDownloadManager.addHandler(url);

    二、图片模块 方法

    • imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。

       加载:

     @TAInjectView(id = R.id.listView)
        ListView  lv;
        Adapter adapter = new Adapter(this, getTAApplication());//传入TAapplication
       lv.setAdapter(adapter);
    绑定数据:
    1、实例化TADownloadBitmapHandler对象传入参数context,图片宽高
    2、实例化TABitmapCallBackHanlder对象,设置图片的加载中图片通过setLoadingImage方法
    3、实例化TABitmapCahceWork对象
    4、该对象调用setFileCache实现设置缓存路径
    5、该对象调用步骤2的bitmap回掉方法并传入tcbh对象
    6、该对象调用步骤1的setProcessDataHandler方法传入TDBH对象
    7、TABitmapCacheWork对象调用loadFormCache方法Object对象及imageview 进行图片缓存读取
    实例代码如下:
    getView方法中进行数据适配:

    三、缓存模块 方法
    • 很简单的实现缓存,以一个简单的文件缓存为例
    • 下载处理类
    • 缓存结果返回操作类

    调用缓存处理方法:

    四、下载器模块
    •  可以简单的实现多线程下载、后台下载、断点续传、对下载进行控制、如开始、暂停、删除等等原理同单线程多任务下载:
    private DownloadManager downloadManager;
    downloadManager = DownloadManager.getDownloadManager();
            downloadManager.setDownLoadCallback(new DownLoadCallback()
            {
                @Override
                public void onSuccess(String url)
                {
    } @Override public void onLoading(String url, String speed, String progress) { // TODO Auto-generated method stub } }); //添加 downloadManager.addHandler(url); //继续 downloadManager.continueHandler(url); //暂停 downloadManager.pauseHandler(url); //删除 downloadManager.deleteHandler(url); }
    • 后台下载

      private IDownloadService downloadService;
          ServiceConnection serviceConnection=new ServiceConnection()
          {
              @Override
              public void onServiceDisconnected(ComponentName name)
              {
                  // TODO Auto-generated method stub
              }
              @Override
              public void onServiceConnected(ComponentName name, IBinder service)
              {
                  // TODO Auto-generated method stub
                  downloadService=(IDownloadService)service;
              }
          };
          //添加任务
          downloadService.addTask(url)
          //暂停任务
          downloadService.pauseTask(url)
          //继续任务
          downloadService.continueTask(url)
          //删除任务
          downloadService.deleteTask(url)


  • 相关阅读:
    Spark开发-SparkUDAF(二)
    Spark开发-Spark UDAF(一)
    Spark开发-Spark中类型安全UDAF开发示例
    Spark开发_构建TypeSafe的Dataset
    布隆过滤器(Bloom Filter)
    一个 Spark 应用程序的完整执行流程
    Spark的RPC
    Spark调优
    Hbase系列文章
    Flink怎么做到精确一次的?
  • 原文地址:https://www.cnblogs.com/cold-ice/p/6080958.html
Copyright © 2020-2023  润新知