1.认识AsyncTask
AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务。AsyncTask直接继承于Object类。
AsyncTask定义了三种泛型类型Params,Progress和Result。
Params启动任务执行的输入参数,比如HTTP请求的URL。
Progress后台任务执行的百分比
Result后台执行任务最终返回的结果,比如String
必须重写两个方法:
doInBackground(Params…)后台执行,比较耗时的操作都可以放这里。
注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要任务,通常需要较长的时间。
在执行的过程中可以调用publicProgress(Progess…)来更新任务的进度。
onPostExecute(Result)相当于Handler处理UI的方式,在这里可以使用在doInBackground得到的结果处理UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回。
不必须重写以下三个方法:
onProgressUpdate(Params…)可以使用进度条添加用户体验度。此方法在主线程执行,用于显示任务执行的进度。
onPreExecute()这里是最终用户调用Execute的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。
onCancelled()用户调用时,要做的操作
AsyncTask使用有一些限制,需要注意:
AsyncTask类必须在UI线程中加载。在Android4.1之后由系统自动完成。
AsyncTask实例必须在UI线程中创建。
execute(Params…)方法必须在UI线程中调用。
不要手动调用提供的四个回调方法。
每个AsyncTask实例只能执行一次
2.了解AsyncTask的原理
3.掌握AsyncTask的使用场景
4.掌握AsyncTask的常用方法
doInBackground(Params…)后台执行,比较耗时的操作都可以放这里。
注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要任务,通常需要较长的时间。
在执行的过程中可以调用publicProgress(Progess…)来更新任务的进度。
onPostExecute(Result)相当于Handler处理UI的方式,在这里可以使用在doInBackground得到的结果处理UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回。
5.掌握AsyncTask的执行流程(分析)
1.AsyncTask的基本使用
//第一个泛型 代表你要给子线程传的东西
//第二个泛型 代表任务执行的进度 用Integer
//第三个泛型 代表解析完成后子线程返回的值,以及主线程接受的值
//第四:继承AsyncTask,然后写三个泛型,< String,Integer,String>
public class MyAsyncTask extends AsyncTask<String,Integer,String> {
@Override
protected String doInBackground(String... strings) {
//代表子线程
//利用子线程请求数据
return Http.requestHttpUrl(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//主线程
//调用
callBackS.getData(s);
}
//创建接口
public interface CallBackS{
//抽象方法
void getData(String str);
}
2.熟悉AsyncTask的优缺点