zoukankan      html  css  js  c++  java
  • 第三方框架之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)


  • 相关阅读:
    ASE19团队项目 beta阶段 model组 scrum report list
    ASE19团队项目 beta阶段 model组 scrum7 记录
    ASE19团队项目 beta阶段 model组 scrum6 记录
    ASE19团队项目 beta阶段 model组 scrum5 记录
    ASE19团队项目 beta阶段 model组 scrum4 记录
    ASE19团队项目 beta阶段 model组 scrum3 记录
    ASE19团队项目 beta阶段 model组 scrum2 记录
    ASE19团队项目 beta阶段 model组 scrum1 记录
    【ASE模型组】Hint::neural 模型与case study
    【ASE高级软件工程】第二次结对作业
  • 原文地址:https://www.cnblogs.com/cold-ice/p/6080958.html
Copyright © 2011-2022 走看看