Android 中 AsyncTask 的使用

  次阅读 作者:智能小宝 来源:互联网 2016-01-14 12:42 我要评论(0)

项目中存在复杂的后台操作且不能影响ui线程显示效果,因些就有很多事情需要后台处理。因此android中提出单线程模型开发。

在开发Android应用时必须遵守单线程模型的原则:

Android UI 操作并不是线程安全的并且这些操作必须在UI线程中执行。

在单线程模型中始终要记住两条法则:

1、不要阻塞UI线程

2、确保只在UI线程中访问Android UI工具包

当一个程序第一次启动时,Android会同时启动一个对应的主线程,主线程主要负责处理与UI相关的事件,

如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分发到对应的组件进行处理。

所以主线程通常又被叫做UI线程。

而在Android中实现异步任务的机制有两种方式: Handler 及 AsyncTask

Handler方式:

需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新.

AsyncTask方式:

使创建异步任务变得更加简单,不再需要编写任务线程和Handler实例即可完成相同的任务.

Handler 的用法在 http://blog.csdn.net/andyhuabing/article/details/7368217 中已学习过了,这里只对异步任务类进行说明。

AsyncTask 的定义:

[java]

<span style="font-size:14px">public abstract class AsyncTask<Params, Progress, Result></span>

三个泛型类型分别代表“启动任务执行的输入参数”、“后台任务执行的进度”、“后台计算结果的类型”。

几个重载方法说明:

1、 execute(Params... params),执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。

2、 onPreExecute(),在execute(Params... params)被调用后立即执行,一般用来在执行后台任务前对UI做一些标记。

3、 doInBackground(Params... params),在onPreExecute()完成后立即执行,用于执行较为费时的操作,此方法将接收

输入参数和返回计算结果。在执行过程中可以调用publishProgress(Progress... values)来更新进度信息。

4、 onProgressUpdate(Progress... values),在调用publishProgress(Progress... values)时,此方法被执行,直接

将进度信息更新到UI组件上。

5、 onPostExecute(Result result),当后台操作结束时,此方法将会被调用,计算结果将做为参数传递到此方法中,

直接将结果显示到UI组件上。

下面将 Handler 及 AsyncTask 两者在一起进行使用,给出一个实际的测试例子:

首先编写一个异步任务类:

注意其实例化的参数:

[java]

<span style="font-size:14px">AsyncTask<String, Integer, String> </span>

[java]

<span style="font-size:14px">package com.example.test;

import java.io.ByteArrayOutputStream;

import java.io.InputStream;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import android.content.Context;

import android.os.AsyncTask;

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...