做学术论文的网站,addaction wordpress,庆祝公司网站上线,网站 图片防盗链摘录自 Android 多线程—–AsyncTask详解 AsyncTask
AsyncTask#xff1a;异步任务#xff0c;从字面上来说#xff0c;就是在我们的UI主线程运行的时候#xff0c;异步的完成一些操作。AsyncTask允许我们的执行一个异步的任务在后台。我们可以将耗时的操作放在异步任务当… 摘录自 Android 多线程—–AsyncTask详解 AsyncTask
AsyncTask异步任务从字面上来说就是在我们的UI主线程运行的时候异步的完成一些操作。AsyncTask允许我们的执行一个异步的任务在后台。我们可以将耗时的操作放在异步任务当中来执行并随时将任务执行的结果返回给我们的UI线程来更新我们的UI控件。通过AsyncTask我们可以轻松的解决多线程之间的通信问题。怎么来理解AsyncTask呢通俗一点来说AsyncTask就相当于Android给我们提供了一个多线程编程的一个框架其介于Thread和Handler之间我们如果要定义一个AsyncTask就需要定义一个类来继承AsyncTask这个抽象类并实现其唯一的一个 doInBackgroud 抽象方法。要掌握AsyncTask我们就必须要一个概念总结起来就是: 3个泛型4个步骤。3个泛型指的是什么呢我们来看看AsyncTask这个抽象类的定义当我们定义一个类来继承AsyncTask这个类的时候我们需要为其指定3个泛型参数
AsyncTask Params, Progress, Result
Params: 这个泛型指定的是我们传递给异步任务执行时的参数的类型
Progress: 这个泛型指定的是我们的异步任务在执行的时候将执行的进度返回给UI线程的参数的类型
Result: 这个泛型指定的异步任务执行完后返回给UI线程的结果的类型我们在定义一个类继承AsyncTask类的时候必须要指定好这三个泛型的类型如果都不指定的话则都将其写成Void
例如
AsyncTask Void, Void, Void
4个步骤当我们执行一个异步任务的时候其需要按照下面的4个步骤分别执行 onPreExecute(): 这个方法是在执行异步任务之前的时候执行并且是在UI Thread当中执行的通常我们在这个方法里做一些UI控件的初始化的操作例如弹出要给ProgressDialogdoInBackground(Params… params): 在onPreExecute()方法执行完之后会马上执行这个方法这个方法就是来处理异步任务的方法Android操作系统会在后台的线程池当中开启一个worker thread来执行我们的这个方法所以这个方法是在worker thread当中执行的这个方法执行完之后就可以将我们的执行结果发送给我们的最后一个 onPostExecute 方法在这个方法里我们可以从网络当中获取数据等一些耗时的操作onProgressUpdate(Progess… values): 这个方法也是在UI Thread当中执行的我们在异步任务执行的时候有时候需要将执行的进度返回给我们的UI界面例如下载一张网络图片我们需要时刻显示其下载的进度就可以使用这个方法来更新我们的进度。这个方法在调用之前我们需要在 doInBackground 方法中调用一个 publishProgress(Progress) 的方法来将我们的进度时时刻刻传递给 onProgressUpdate 方法来更新onPostExecute(Result… result): 当我们的异步任务执行完之后就会将结果返回给这个方法这个方法也是在UI Thread当中调用的我们可以将返回的结果显示在UI控件上 为什么我们的AsyncTask抽象类只有一个 doInBackground 的抽象方法呢原因是我们如果要做一个异步任务我们必须要为其开辟一个新的Thread让其完成一些操作而在完成这个异步任务时我可能并不需要弹出要给ProgressDialog我并不需要随时更新我的ProgressDialog的进度条我也并不需要将结果更新给我们的UI界面所以除了 doInBackground 方法之外的三个方法都不是必须有的因此我们必须要实现的方法是 doInBackground 方法。