Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Android异步操作----AsyncTask类

在开发Android应用程序时必须遵守单线程模型的原则,尤其是开发有网络交互功能的应用,Android UI线程主要用来控制控件和触屏的操作。在单线程模型中必须要遵行两条原则:1、 不要阻塞UI线程;2、 确保只在UI线程中访问Android UI工具包当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的时间,例如:用户的按键事件,用户接触屏幕的事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分发到对应的组件进行处理。所以主线程通常又被叫做UI线程。--------------------------------------分割线 --------------------------------------Android异步下载图片并且缓存图片到本地 http://www.linuxidc.com/Linux/2014-04/100444.htmAndroid异步任务(AsyncTask)的设计思想 http://www.linuxidc.com/Linux/2014-02/97104.htmAndroid 异步加载图片分析 http://www.linuxidc.com/Linux/2013-06/85369.htmAndroid 中加载网络资源时的优化 缓存和异步机制 http://www.linuxidc.com/Linux/2013-06/85364.htmAndroid短彩信幻灯片异步加载机制 http://www.linuxidc.com/Linux/2013-03/81528.htmAndroid-自定义TextView和异步加载图片的实现 http://www.linuxidc.com/Linux/2012-12/76331.htm--------------------------------------分割线 --------------------------------------AsyncTask其实是Android开发包提供的一个工具类,它使创建需要与用户界面交互的长时间运行的任务变得更简单。相对来说AsyncTask更轻量级一些,适用于简单的异步处理,不需要借助线程和Handler即可实现。AsyncTask是抽象类,它定义了三种泛型类型,即AsyncTask中有三个参数(例如class MyTask extends AsyncTask<参数1 , 参数2 ,参数3>{}):参数1:向后台任务的执行方法传递参数的类型;参数2:在后台任务执行过程中,要求主UI线程处理中间状态,通常是一些UI处理中传递的参数类型;参数3:后台任务执行完返回时的参数类型。其中参数1和参数2是一个泛型参数,即可变数组参数,例如String…,相当于String[]。传参数时可传可不传,传的话可以使一个个并列地传,也可以直接是一个数组。AsyncTask的执行分为四个步骤,每一步都对应一个回调方法,这些方法不应该有程序调用,开发者需要重写这些方法:1、 实例化AsyncTask:MyTask task = new MyTask(this);2、实现AsyncTask中定义的如下方法,下面是按照执行顺序列出的:1)、onPreExecute():运行于UI线程,该方法将在执行实际的后台操作前被调用。可以在该方法中做一些准备工作,例如在界面上显示一个进度条反映当前任务执行的进度;2)、doInBackground(Params…):该方法运行在后台线程中,主要负责执行那些很耗时的后台计算下载工作,也是使用AsyncTask必须重写的一个方法。我们可以在其中调用publishProgress方法来更新任务的进度。3)、onProgressUpdate(Progress…):运行于UI线程,在publishProgress方法被调用后执行,将任务进度显示在界面上;4)、onPostExecute():运行于UI线程,顾名思义,该方法在doInBackground执行完后,后台的计算结果将通过该方法传递到UI线程;5)、onCancelled():运行于UI线程,该方法也可以不重写,主要用来当用户按取消按钮后,退出后台任务使用。为了正确的使用AsyncTask类,以下是几条必须遵守的准则:1、 Task的实例化必须在UI线程中创建;2、 Execute方法必须在UI线程中调用;3、 不要手动调用onPreExecute()、onPostExecute(Result)、doInBackground(Params…)、onProgressUpdate(Progress)这几个方法;4、 该Task只能被执行一次,否则多次调用时将会出现异常注意:Task只能被执行一次,也就是说只能调用一次Task.execute()方法,如果想再次调用,必须重新实例化这个类。更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-05/102297p2.htm 免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /2014年资料/5月/26日/Android异步操作----AsyncTask类下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm