引言
在android的线程中要求,不能在子线程中修改布局,否则会出现异常。在应对这种情况上,可以采用handler或者异步任务来实现。现在,就简单的说一下,关于AsyncTask异步任务。
AsyncTask
AsyncTask对象中有三个参数AsyncTask<Params, Progress, Result>
- Params:UI线程传过来的参数类型
- Progress:发布进程类型
- Result:返回结果的类型,耗时操作doInBackground的返回结果传给执行之后的参数类型
执行流程
- onPreExecute():执行耗时操作之前处理UI线程(可控制UI),即初始化操作
- doInBackground():执行耗时操作(在后台中运行)调用
- publishProgress():执行操作中,发布进度后(可控制UI)
- onPostExecute():执行耗时操作之后处理UI线程事件(可控制UI),即收尾操作
使用流程
–>class MyAsyncTask extends AsyncTask<Void, Integer, String>
–>protected void onPreExecute(
–>protected String doInBackground(Void… params)
{
publishProgress(i * 10)
}
–>protected void onProgressUpdate(Integer… values)
{
values[0] //每次更新值
}
–>protected void onPostExecute(String result)
注意事项
- 在异步任务中,不能进行多任务,否则会出现异常问题,所以最好是进行一个的运行,不要进行多运行
- 在异步创建好之后别忘记进行asyncTask.execute()//可以通过此处传递参数给AsyncTask方法,该方法只能在UI线程里使用,否则异步是不会进行运行的。如果在定义的时候需要输入值的话,在此是需要输入你要输入的值的。