文档章节

性能之多线程

j
 jason_fu
发布于 2016/07/28 00:56
字数 502
阅读 3
收藏 0
点赞 0
评论 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

C++11实现跨平台线程池

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

初雪之音 ⋅ 2016/03/19 ⋅ 0

【Bugly干货分享】Android性能优化典范之多线程篇

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

腾讯Bugly ⋅ 2016/05/23 ⋅ 1

python自动化运维之多线程

1、Python中的多线程 执行一个程序,即在操作系统中开启了一个进程,在某一时刻,一个CPU内核只能进行一个进程的任务,现在的计算机所说的多进程/多任务其实是通过加快CPU的执行速度来实现的...

炫维 ⋅ 2017/08/31 ⋅ 0

netty文章收藏

1.林峰的关于netty文章 不错,遇到问题反复看了几遍总有启发,还说收藏记录一下。 http://www.infoq.com/cn/netty Netty案例集锦之多线程篇(续)作者 李林锋 发布于 2015年11月25日 9 Nett...

GREKI ⋅ 2016/04/05 ⋅ 0

Java 复习之多线程

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

maoqitian ⋅ 2017/12/02 ⋅ 0

JDK高性能编程之多线程

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

Hi徐敏 ⋅ 2015/10/17 ⋅ 0

Go 的 HTTP Web 框架--Gin Web Framework

Gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API,但是性能更好。因为有了 httprouter 性能提升了 40 倍之多。 $ cat test.go package main import ( "net/http" "github.com/g...

红薯 ⋅ 2015/05/15 ⋅ 4

Gin —— Go 语言的高性能 Web 框架

Gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API,但是性能更好。因为有了 httprouter 性能提升了 40 倍之多。

oschina ⋅ 2015/05/15 ⋅ 0

Netty高性能之道

背景 1.1. 惊人的性能数据 最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于J...

HenrySun ⋅ 2016/04/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

VS2015配置并运行汇编(一步一步照图做)【vs2017的链接在最后】

x64: TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. ; Last update: 2/1/02 ;.MODEL flat,stdcall x64 not su......

simpower ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

你真的明白RPC 吗?一起来探究 RPC 的实质

你真的明白RPC 吗?一起来探究 RPC 的实质 不论你是科班出身还是半路转行,这么优秀的你一定上过小学语文,那么对扩句和缩句你一定不陌生。缩句就是去除各种修饰提炼出一句话的核心,而不失基...

AI9o後 ⋅ 昨天 ⋅ 0

z-index设置失效?

今天碰到了一个问题,就是在给li设置提示框的时候,有用到遮罩效果,本来想把对应的出现在最顶层,可是不管将li设置的z-index值设为多大,li都没有出现在遮罩层之上。 我在网上查了z-index设...

IrisHunag ⋅ 昨天 ⋅ 0

CyclicBarrier、CountDownLatch以及Semaphore使用及其原理分析

CyclicBarrier、CountDownLatch以及Semaphore是Java并发包中几个常用的并发组件,这几个组件特点是功能相识很容易混淆。首先我们分别介绍这几个组件的功能然后再通过实例分析和源码分析其中设...

申文波 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部