文档章节

性能之多线程

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

创建一个反应敏捷的应用时,一个重要的技巧就是保证你的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;
    }

 

© 著作权归作者所有

共有 人打赏支持
j
粉丝 0
博文 2
码字总数 777
作品 0
朝阳
程序员
2015-1-31 阿里技术沙龙 - Android应用性能优化实践

2015-1-31 阿里技术沙龙 - Android应用性能优化实践 杨辉的个人博客2015-02-01217 阅读 技术Android应用性能优化 周末跑去深圳参加了一场阿里主持的技术沙龙,主题是《如何构建高可用的APP》...

杨辉的个人博客
2015/02/01
0
0
C++11实现跨平台线程池

生产者消费者 转自:http://www.cnblogs.com/sanjin/archive/2012/08/09/2629890.html std::conditionvariable的使用方法如下: ·当持有锁(mutex)之后,线程调用wait ·wait解开持有的互斥锁...

初雪之音
2016/03/19
376
0
【Bugly干货分享】Android性能优化典范之多线程篇

本文涉及的内容有:多线程并发的性能问题,介绍了 AsyncTask,HandlerThread,IntentService 与 ThreadPool 分别适合的使用场景以及各自的使用注意事项,这是一篇了解 Android 多线程编程不可...

腾讯Bugly
2016/05/23
381
1
JDK高性能编程之多线程

多线程 j360-jdk调试功能 https://github.com/xuminwlt/j360-jdk 以下内容部分选摘自互联网及前人总结,如有问题请指正,我会及时更正,谢谢! 实现 - 继承Thread - 实现Runnable接口 - 使用...

Hi徐敏
2015/10/17
430
0
Java 复习之多线程

什么是线程 线程是程序执行的一条路径, 一个进程中可以包含多条线程,一个进程可以理解成一个程序集,比如电脑中运行的 QQ 就是一个是一个进程,我们可以同时和多个人视频聊天,每一个聊天可...

maoqitian
2017/12/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
2
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部