春衣少年当酒歌,起舞四顾以笑和。这篇文章主要讲述第三方框架之ThinkAndroid 学习总结相关的知识,希望能为你提供帮助。
上文记录了一些Thinkandroid常用的模块,本文继续介绍ThinkAndroid中的网络化模块。
按照惯例先上Github原文地址:https://github.com/white-cat/ThinkAndroid
一、Http模块使用方法:
- 异步get方法
- 实例化AsyncHttpClient对象
- 调用异步get方法 传入(String url ,new AsyncHttpResponseHandler方法)
- 实现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方法
- 实例化TAsyncHttpClient对象
- 调用异步get方法 传入(String url ,new AsyncHttpResponseHandler方法)
- 实现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方法
- 实例化AsyncHttpClient对象
- 实例化RequestParams对象,并put添加键值对参数
- 调用异步post方法 传入(String url ,new AsyncHttpResponseHandler方法)
- 实现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下载文件:支持断点续传,随时停止下载任务 或者 开始任务
- 实例化AsyncHttpClient对象
- 实例化FileHttpResponseHandler对象,并传入参数文件的缓存路径
- 实现onProgress()、onSuccess()、onFailure())方法
- fileHttpResponseHandler.setInterrupt(false); 为停止暂停的方法 otherwise 为开启下载暂停的方法
- 调用syncHttpClient的download(url,fileHttpResponseHandler);
方法,传入url地址及FileHttpResponseHandler对象
实例代码:
文章图片
文章图片
-
单线程、多任务下载
- 实例化DownLoadManager对象
- 调用addHandler方法并传入下载地址
- 调用下载回调方法并实现OnLoading()、onAdd 等方法
- 调用pauseHandler暂停下载任务
final DownloadManager mDownloadManager = DownloadManager.getDownloadManager();
mDownloadManager.addHandler(url);
文章图片
二、图片模块 方法
- imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。
@TAInjectView(id = R.id.listView) ListViewlv; 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方法中进行数据适配:
文章图片
三、缓存模块 方法
- 很简单的实现缓存,以一个简单的文件缓存为例
- 下载处理类
文章图片
- 缓存结果返回操作类
文章图片
调用缓存处理方法:
【第三方框架之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)
推荐阅读
- Android SDK国内代理速度还可以
- Android NDk环境配置
- android adb 命令详解
- android studio和eclipse中如何获取sha1值
- Please install Android target
- Android-adb 常用命令 和 sqlite
- 安卓Android的内存管理原理解析
- Android 四种常见的线程池
- 如何运用带路由的宽带Modem与宽带路由