[关闭]
@liter 2015-10-05T00:01:11.000000Z 字数 2011 阅读 3593

Android网络通信框架LiteHttp 第六节:禁用网络和流量&耗时统计

litehttp2.x版本系列教程


官网: http://litesuits.com
QQ群: 大群 47357508,二群 42960650

本系列文章面向android开发者,展示开源网络通信框架LiteHttp的主要用法,并讲解其关键功能的运作原理,同时传达了一些框架作者在日常开发中的一些最佳实践和经验。

本系列文章目录总览: https://zybuluo.com/liter/note/186513


第六节:LiteHttp之禁用网络和流量&耗时统计

1. 禁用网络

开发者可以通过lite-http的config来设置禁用某种网络,比如我们将移动网络和wifi都禁用:

  1. // disable some network
  2. HttpConfig config = liteHttp.getConfig();
  3. // must set context
  4. config.setContext(activity);
  5. // disable mobile(2G/3G/4G) and wifi network
  6. config.setDisableNetworkFlags(HttpConfig.FLAG_NET_DISABLE_MOBILE | HttpConfig.FLAG_NET_DISABLE_WIFI);
  7. liteHttp.executeAsync(new StringRequest(url).setHttpListener(new HttpListener<String>() {
  8. @Override
  9. public void onSuccess(String s, Response<String> response) {
  10. HttpUtil.showTips(activity, "LiteHttp2.0", s);
  11. }
  12. @Override
  13. public void onFailure(HttpException e, Response<String> response) {
  14. HttpUtil.showTips(activity, "LiteHttp2.0", e.toString());
  15. }
  16. }));

这样不管是sim卡网络还是无线wifi下发送请求都会失败,onFailure会触发。
恢复可用状态:

  1. // enable network
  2. HttpConfig config = liteHttp.getConfig();
  3. // enable all
  4. config.setDisableNetworkFlags(HttpConfig.FLAG_NET_DISABLE_NONE);

2. 流量和耗时统计

只需要从配置打开统计开关即可:

  1. // Traffic/Time Statistics
  2. String picUrl = "http://pic.33.la/20140403sj/1638.jpg";
  3. // turn on
  4. liteHttp.getConfig().setDoStatistics(true);
  5. liteHttp.executeAsync(new FileRequest(picUrl).setHttpListener(new HttpListener<File>() {
  6. @Override
  7. public void onSuccess(File file, Response<File> response) {
  8. String msg = "This request take time:" + response.getUseTime()
  9. + ", readed length:" + response.getReadedLength();
  10. msg += " Global " + liteHttp.getStatisticsInfo();
  11. HttpUtil.showTips(activity, "LiteHttp2.0", msg);
  12. }
  13. @Override
  14. public void onFailure(HttpException e, Response<File> response) {
  15. HttpUtil.showTips(activity, "LiteHttp2.0", e.toString());
  16. }
  17. }));

更多数据统计:

response.getRedirectTimes(); // 重定向的次数
response.getRetryTimes(); // 重试的次数
response.getUseTime(); // 本次请求耗时
response.getContentLength(); // header中的数据长度(Content-Length)
response.getReadedLength(); // 实际读取的数据长度

整体数据统计:

StatisticsInfo sta = liteHttp.getStatisticsInfo();
sta.getConnectTime(); // litehttp 实例化后所有请求耗时累计
sta.getDataLength(); // litehttp 实例化后读取数据长度累计

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注