Android项目驱动式开发教程课件作者刘正主编第5章节异步任务开发.pptVIP

  • 5
  • 0
  • 约1.35万字
  • 约 49页
  • 2017-11-12 发布于广东
  • 举报

Android项目驱动式开发教程课件作者刘正主编第5章节异步任务开发.ppt

5.2 Android使用 Thread+Handler+Message进行异步作 用好AsnycTask的同时也要掌握功能更强大、更自由的与Main线程通讯的方法。 阅读AsyncTask的源码可知,AsyncTask是使用java.util.concurrent框架来管理线程以及任务的执行的,concurrent框架是一个非常成熟,高效的框架,经过了严格的测试。这说明AsyncTask的设计很好的解决了匿名线程存在的问题。 AsyncTask是抽象类,子类必须实现抽象方法doInBackground(Params... p) ,在此方法中实现任务的执行工作,比如连接网络获取数据等。通常还应该实现onPostExecute(Result r)方法,因为应用程序关心的结果在此方法中返回。需要注意的是AsyncTask一定要在主线程中创建实例。 5.2 Android使用 Thread+Handler+Message进行异步作 AsyncTask中有三个参数泛型类型( 例如: class MyTask extends AsyncTask参数1,参数2,参数3{ }) 参数1:向后台任务的执行方法传递参数的类型 参数2:在后台任务执行过程中,要求主UI线程处理中间状态,通常是一些UI处理中传递的参数类型 参数3:后台任务执行完返回时的参数类型 AsyncTask的执行分为四个步骤。每一步都对应一个回调方法,需要注意的是这些方法不应该由 5.2 Android使用 Thread+Handler+Message进行异步作 应用程序调用,需要做的只是重写父类的方法。在任务的执行过程中,这些方法被系统自动调用: onPreExecute() 当任务执行之前开始调用此方法,可以在这里显示进度对话框。 doInBackground(Params...) 此方法在后台线程执行,完成任务的主要工作,通常放入需要较长时间完成。在执行过程中可以调用publicProgress(Progress...)来更新 5.2 Android使用 Thread+Handler+Message进行异步作 任务的进度。 onProgressUpdate(Progress...) 此方法在主线程执行,用于显示任务执行的进度。 onPostExecute(Result) 此方法在主线程执行,任务执行的结果作为此方法的参数返回。 5.3.2 AsyncTask的程序模型 1 import android.content.Context; 2 import android.os.AsyncTask; 3 class MyTask extends 5.2 Android使用 Thread+Handler+Message进行异步作 AsyncTaskString/*参数1*/, Integer/*参数2*/, String/*参数3*/ { 4 public MyTask(Context context) { 5 } 6 @Override 7 protected void onPreExecute(){ 8 } 9 @Override 10 protected String/*参数3*/ 5.2 Android使用 Thread+Handler+Message进行异步作 doInBackground(String/*参数1*/... params) { 11 return null; 12 } 13 @Override 14 protected void onProgressUpdate(Integer/*参数2*/... values) { 5.2 Android使用 Thread+Handler+Message进行异步作 15 } 16 @Override 17 protected void onPostExecute(String/*参数3*/ result) { 18 } 19} 第1、2行,导入应用所需要的包。第3行,自定义MyTask类继承AsyncTask,AsyncTask是抽象类。AsyncTask定义了三种泛型类型 参数1为启动任务执行的输入参数在实例中定义为String类型 5.2 Android使用 Thread+Handler+Message进行异步作 ,参数2为后台任务执行的百分比,参数3为后台执行任务最终返回的结果。? 第4、5行为MyTask的构造函数,定义输入参数为上下文Context。此构造函数不是必须的。第7、8行是在后台执行前调用的函数,一般作为后台的准备。如启动一个对话框等。第10、11行为后台执行的部分,输入参数是Asy

文档评论(0)

1亿VIP精品文档

相关文档