文档章节

性能之多线程

j
 jason_fu
发布于 2016/07/28 00:56
字数 502
阅读 18
收藏 0

精选30+云产品,助力企业轻松上云!>>>

创建一个反应敏捷的应用时,一个重要的技巧就是保证你的UI线程做少量的工作。任何潜在的长耗时任务应该在其他线程中处理。经典的例子就是受不可预料延迟影响到网络操作。用户可以容忍一些打断,特别是如果你提供一些反馈说明正在处理一些东西,但是一个冻结的应用对用户来说没有提示。

在这篇文章中,我们将创建一个简单的图片下载器用来演示。我们将从网络下载一些缩略图来填充ListView。创建一个异步任务用来后台下载将使我们的应用更流畅。

An Image downloader

从网络下载图片很简单,使用framwork提供的HTTP相关类。以下是一种实现:

static Bitmap downloadBitmap(String url) {
        final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
        final HttpGet getRequest = new HttpGet(url);

        try {
            HttpResponse response = client.execute(getRequest);
            final int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != HttpStatus.SC_OK) {
                Log.w("ImageDownloader", "Error " + statusCode + " while retrieving bitmap from " + url);
                return null;
            }

            final HttpEntity entity = response.getEntity();
            if (entity != null) {
                InputStream inputStream = null;
                try {
                    inputStream = entity.getContent();
                    final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                } finally {
                    if (inputStream != null) {
                        inputStream.close();
                    }
                    entity.consumeContent();
                }
            }


        } catch (IOException e) {
            getRequest.abort();
            Log.w("ImageDownloader", "Error while retrieving bitmap from " + url, e);
        } finally {
            if (client != null) {
                client.close();
            }
        }
        return null;
    }

 

上一篇: Thinking in Java
下一篇: Thinking in Java
j
粉丝 0
博文 2
码字总数 777
作品 0
朝阳
程序员
私信 提问
加载中
请先登录后再评论。
网络编程和多线程编程

> 网络应用编程 Android Socket编程与HTTP编程 TCP协议与UDP协议的区别与适用场景 针对HTTP进行网络通信的方法主要有两种,一种是使用HttpURLConnection实现;另一种是使用HttpClient实现。 ...

shareus
2018/05/10
0
0
Matlab升级 AMD锐龙性能恢复满血:轻松提升60%

Mathwork Matlab是一款极为流行、权威的计算软件,但是去年11月的时候,有人发现AMD锐龙处理器疑似被它“劣化”,无法正确调用最新指令集,导致性能残血。Matlab会提前检测处理器身份,也就是...

快科技
04/01
0
0
Matlab升级 AMD锐龙性能恢复满血:轻松提升60%

Mathwork Matlab是一款极为流行、权威的计算软件,但是去年11月的时候,有人发现AMD锐龙处理器疑似被它“劣化”,无法正确调用最新指令集,导致性能残血。Matlab会提前检测处理器身份,也就是...

快科技
04/01
0
0
5.7新特性之多线程复制

5.7新特性之多线程复制 一、背景 1.1传统主从复制存在的问题   众所周知,MySQL的从库可以做业务的线性扩展、实现读写分离、数据备份等功能。但是当主库压力比较大的时候,就会产生一个让人...

梓杰
2019/07/08
0
0
1 并发编程

一 背景知识 二 python并发编程之多进程 三 python并发编程之多线程 四 python并发编程之协程 五 python并发编程之IO模型 六 补充:paramiko模块 一 背景知识 顾名思义,进程即正在执行的一个...

osc_1otmny9i
2018/07/10
2
0

没有更多内容

加载失败,请刷新页面

加载更多

java使用jsoup时绕过https证书验证

java 代码 增加一个工具类 在jsoup获取之前调用此方法 //your codeSSLHelper.init();Connection connect = Jsoup.connect(url).userAgent(USER_AGENT);connect.header("Accept","text/htm......

MeiJM
27分钟前
30
0
6 Message 消息提示框

1 element.js导入message import { Message } from 'element-ui'# 赋值给变量,便于this调用Vue.prototype.$message = Message 2 调用 this.$message.error('错误')类型有:success,w......

书阳
28分钟前
16
0
聊聊rocketmq-client-go的strategy

序 本文主要研究一下rocketmq-client-go的strategy AllocateStrategy rocketmq-client-go-v2.0.0/consumer/strategy.go type AllocateStrategy func(string, string, []*primitive.MessageQ......

go4it
55分钟前
21
0
BuildRun低代码开发教程八节 | 图表和仪表盘展示

课程说明 ▍ 1.1 课程实现功能 本课程为物联网应用平台设计一个仪表盘首页,包括以下内容: 卡片展示设备总数; 卡片展示网关总数; 卡片展示产品总数; 卡片展示产品分组总数; 图表展示各运...

BuildRun团队
59分钟前
23
0
JavaSE第03篇:Java基础语法之运算符和流程控制

本章将会延续JavaSE第02篇,详细讲解Java基础语法中的运算符和流程控制中的顺序结构、分支结构。 第一章:运算符 运算符,简而言之就是运算的符号。 我们通常所理解的运算一般和数学有关系,...

雷哒哒
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部