一、编写一个类继承AsyncTask<String,Interger,String>并重写它的抽象方法:
doInBackground(String... params),//运行在主线程中
根据需要还会重写其他几个方法:
onPreExecute();//运行在主线程中
onProgressUpdate(Integer... values);//运行在主线程中
onPostExecute(String s);//运行在主线程中
onCancelled();//运行在主线程中
二、必须在主线程中启动异步任务,并且这个异步任务对象只能启动一次,多次启动会报错,启动异步任务的代码如下:
假如我们自定义的异步任务类的名字叫MyAsyncTask,
new MyAsyncTask.execute(path);//path为网址;
说明:异步任务执行时函数的执行顺序:
1、onPreExecute()====>doInBackground(String... params)====>onPostExecute(String s);
2、如果在doInBackground(String... params)方法中调用了publishProgress(i),则会自动调用onProgressUpdate(Integer... values),此时函数的调用过程为:onPreExecute()===>onProgressUpdate(Integer... values)===>publishProgress(i)===>onProgressUpdate(Integer... values)====>onPostExecute(String s);
泛型类AsyncTask<String,Integer,String>的三个泛型参数说明:
参数一:启动异步任务是传递的实参的数据类型,也是doInBackground(String... params)形参的数据类型;
参数二:是在doInBackfround(String...params)方法执行中publishProgress(i)方法的实参的数据类型,也是onProgressUpdate(Integer... values)方法中形参的数据类型;
参数三:是doInBackground(String... params)方法返回值得数据类型,也是onPostExecute(String s)方法中形参的数据类型。