Android中的AsyncTask

Android中的AsyncTask

Android中必须在主线程处理UI,否则会引起一些意想不到的问题。然而有些任务必须处理UI而且耗时长,有可能阻塞主线程。AsyncTask是异步线程,可以方便处理这类和UI线程相关的任务。一个AsyncTask有3个泛型参数Params, Progress and Result和4个步骤begin, doInBackground, processProgress and endAsyncTask经常用于解决Android UI堵塞问题。要使用AsyncTask必须继承它并实现它的doInBackground函数,通常还实现onPostExecute(Result)函数。同时AsyncTask必须在主线程(即UI线程)中被调用。

下面是官方说明文档的一个例子:

Android中的AsyncTask_第1张图片

三个泛型参数(在定义一个AsyncTask时指定):

1.Params,当执行时,发送给任务的参数

2.Progress,在后台计算期间,计算进度的类型

3.Result,后台计算返回的结果类型

四个步骤:

1. onPreExecute() 执行execute前被调用,可以在此为后台处理做一些相应的准备工作,它运行于UI线程

2.doInBackground(Params...),后台进程执行的具体计算在这里实现,调用execute后,并且执行完onPreExecute后被调用,必须重载这个方法。在这个方法内在后台运行,和主线程独立。

3.onProgressUpdate(Progress...),运行于UI线程。可以在在doInBackground(Params...)中使用以改变UI。

4.onPostExecute(Result),运行于UI线程,参数就是doInBackground(Params...)的返回值。此方法也要经常重载。

以下是使用它时的注意事项:

1.它的任务示例必须在主线程中创建

2.Execute函数必须在主线程中调用

3.不要人为地调用onPreExecute(), onPostExecute(Result), doInBackground(Params...), onProgressUpdate(Progress...)

4.每个任务只能调用一次execute函数

一些常用的例子是使用AsyncTask访问数据库和从网络下载图片。

你可能感兴趣的:(UI,android,数据库,工作,文档,任务)