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

时间:2023-03-09 03:27:17
第三方框架之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里执行处理下载进度,速度等操作;

实例代码:

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

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

  • 单线程、多任务下载

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

实例代码如下:

final DownloadManager mDownloadManager = DownloadManager.getDownloadManager();

  mDownloadManager.addHandler(url);

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

二、图片模块 方法

  • 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 进行图片缓存读取
实例代码如下:
第三方框架之ThinkAndroid 学习总结(二)
getView方法中进行数据适配:

第三方框架之ThinkAndroid 学习总结(二)三、缓存模块 方法
  • 很简单的实现缓存,以一个简单的文件缓存为例
  • 下载处理类
第三方框架之ThinkAndroid 学习总结(二)
  • 缓存结果返回操作类
第三方框架之ThinkAndroid 学习总结(二)

调用缓存处理方法:

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

四、下载器模块
  • 可以简单的实现多线程下载、后台下载、断点续传、对下载进行控制、如开始、暂停、删除等等原理同单线程多任务下载:
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)