第三方框架之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对象
ps:一般在onProgress里执行处理下载进度,速度等操作;
实例代码:


单线程、多任务下载
- 实例化DownLoadManager对象
- 调用addHandler方法并传入下载地址
- 调用下载回调方法并实现OnLoading()、onAdd 等方法
- 调用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)
第三方框架之ThinkAndroid 学习总结(二)的更多相关文章
- 第三方框架之ThinkAndroid 学习总结(一)
ThinkAndroid是一个免费的开源的.简易的.遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单.快速的进行Android应用程序的开发,包含Android mvc.简易s ...
- 开源框架.netCore DncZeus学习(二)配置连接
配置连接字符串,update-database,初始数据后,访问报错,提示offset错误.因为本机上使用的sql2008. .net Core 2.X中的EF访问sqlserver2008默认使用的 ...
- 开源框架.netCore DncZeus学习(三)增加一个菜单
框架运行起来了,先尝试增加一个菜单. 本节增加一个菜单名字:公司管理,需要注意一点,所有的name都要保持一致,注意圈中部分.为了防止手敲代码出错,建议复制已有的代代码进行修改(比如这里用的Role页 ...
- 开源框架.netCore DncZeus学习(一)npm安装
今天看到一个不错的开源项目DncZeus, https://github.com/lampo1024/DncZeus 整个界面挺漂亮,而且权限做到了按钮级别,功能也较容易扩展,刚好学习VUE纯看文章很 ...
- 二:新浪微博:第三方框架管理工具CocoaPods的安装和使用
一:CocoaPods的安装 我们可以用淘宝的Ruby镜像来访问cocoapods.按照下面的顺序在终端中敲入依次敲入 $ gem sources --remove https://rubygems. ...
- Veins(车载通信仿真框架)入门教程(二)——调用第三方库
Veins(车载通信仿真框架)入门教程(二)——调用第三方库 在借助Veins进行自己的研究时我们经常需要实现一些比较复杂的功能,有时就需要借助第三方库的帮助. 博主的研究需要使用神经网络,但是自己编 ...
- 2.VUE前端框架学习记录二
VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...
- keras框架下的深度学习(二)二分类和多分类问题
本文第一部分是对数据处理中one-hot编码的讲解,第二部分是对二分类模型的代码讲解,其模型的建立以及训练过程与上篇文章一样:在最后我们将训练好的模型保存下来,再用自己的数据放入保存下来的模型中进行分 ...
- ios开发学习笔记040-autolayout 第三方框架Masonry
不管是是界面创建约束还是代码创建约束,苹果官方提供的方式都比较繁琐.所以出现了第三方框架. Masonry 在github地址如下: https://github.com/SnapKit/Masonr ...
随机推荐
- 使用keychain保存用户名和密码等敏感信息 KeychainItemWrapper和SFHFKeychainUtils
iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储.相对于 NSUserDefaults.文件保存等一般方式,ke ...
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...
- 关于控件的Invoke(...)方法和BeginInvoke(...)方法的区别
这两个方法最主要的区别就是一个是同步,一个是异步,即会阻塞线程,那么阻塞哪个线程呢?我们用代码来分析(工具是VS2010) using System; using System.Collections ...
- 远方的塔--Pylons
转自:https://en.wikipedia.org/wiki/Pylons_project#Pylons_Framework Pylons
- JS获取URL参数
$(function () { var action = getUrlParam("action"); alert(action) }); //根据URL中的参数获取值 funct ...
- UIAlertController使用
// 将UIAlertController模态出来 相当于UIAlertView show 的方法// 初始化一个一个UIAlertController // 参数preferredStyle: ...
- iOS让键盘消失,取消第一响应,取消一级响应
在开发中经常会遇到输入文本内容的时候,输入完毕的时候怎么让键盘消失的问题,有的是更改键盘的按键的方法,有的是点击屏幕的其他地方让键盘消失,个人更倾向于第二种,点击屏幕的其他地方让键盘消失,要实现这种方 ...
- HTML文档可以包含的内容
通过不同的标签,HTML文档可以包含不同的内容,比如文本,链接,图片,列表,表格,表单,框架等. 文本 HTML对文本的支持是最丰富的,你可以设置不同级别的标题,分段和换行,可以指定文本的语义和外观, ...
- Linux内核--内核数据类型
转自:http://www.linuxidc.com/Linux/2013-12/93637.htm 将Linux 移植到新的体系结构时,开发者遇到的若干问题都与不正确的数据类型有关.坚持使用严格的数 ...
- WiX Toolset 教程索引页
注意:虽然WiX Toolset功能强大,但其学习曲线相对较高.请慎重选择: 若没有足够时间.没心思搞的请绕行至inno setup.installshield.nisi.setupfactory.. ...

三、缓存模块 方法
