Android中实现异步任务机制之一的AsyncTask是安卓提供的轻量级的异步类,实现简单方便,而且容易实现进度更新。
使用方法可以继承AsyncTask,也可使用匿名类。但都需要提供3个泛型,和必须重载doInBackground(String... params)方法。其他方法可以根据业务来决定是否需要重载。
如下图,各泛型的用处
1.第一String用来传递参数,切参数不定。
2.第二个Integer用来更新进度的参数,一般用数值类来表示
3.第三个String用在doInBackground返回值,该返回值又会用于onPostExecute()的参数。

1.无需更新UI的后台操作
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... params) {
return null;
}
}.execute();
2.需返回更新UI的后台操作
new AsyncTask<String, Integer, String>() {
@Override
protected void onPostExecute(String s) {
Log.e("log", s);
super.onPostExecute(s);
}
@Override
protected String doInBackground(String... params) {
return "执行成功";
}
}.execute();
3.需实时更新进度的后台操作
@Override
protected void onProgressUpdate(Integer... values) {
if (values[0] == 1){
}
if (values[0] == 2){
}
super.onProgressUpdate(values);
}
@Override
protected String doInBackground(String... params) {
try {
Thread.sleep(1000);
publishProgress(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
Thread.sleep(1000);
publishProgress(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
}.execute();
尊重作者,转载请注明出处!
版权申明:本文版权归作者所有,未经授权,任何单位或个人不得以任何形式转载、摘编或利用其它方式使用本博客内容。作者保留追究相关法律责任的权利。如需使用博客内容,请与作者联系获得授权。感谢对本文的尊重与支持。
免责声明:本网站所载内容仅供参考,不构成任何专业建议。用户基于本网站内容作出的决策,风险自担。对于因使用本网站内容而产生的任何直接或间接损失,本网站不承担任何责任。请用户审慎判断,理性使用。