AsyncTask<String ,Integer,Integer>类中各个方法的执行先后顺序
2014-07-06 13:19
399 查看
首先,本例子是本人项目一个登录模块中的一小片代码段,并不是完整的代码。只是单纯说明了继承于AsyncTask类的子类对象中各个方法的执行先后顺序。
本例在UI中有以下语句:AnsLogin ansk=new AnsLogin();ansk.execute("");是对AnsLogin类的使用。
/*
* 生成该类的对象,并调用其execute()方法之后(AnsLogin ansk=new AnsLogin();ansk.execute("");)
* 首先执行onPreExecute()方法
* 其次是执行doInBackground()方法
*/
class AnsLogin extends AsyncTask<String, Integer, Integer> {
@Override
// 该方法将在执行实际的后台操作前被UI thread调用(也就是前面所说的:调用其execute()方法之后,首先执行onPreExecute()方法),其运行在UI线程当中。
//主要用于在异步操作之前做一些准备工作,如在页面出现转菊花提示:正在下载数据等
protected void onPreExecute() {
super.onPreExecute();
}
// 将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中,因此不能在此方法中更新UI线程。
// 这里将主要负责执行那些很耗时的后台计算工作,如请求服务器参数等。
// 在该方法中,每次通过调用方法:publishProgress(i),都可以触发onProgressUpdate()方法
//doInBackground(String... params)的参数为UI线程中调用execute()方法时所传递过来的参数,如本例中ansk.execute("")就传了空的字符串“”
@Override
protected Integer doInBackground(String... params) {
resXML = ServiceInfo.Login(txtId.getText().toString(),txtPwd.getText().toString());
int i = AnalysisXML.AnalysisResult(resXML).getResultCount();
// publishProgress(i);//触发onProgressUpdate()方法,发布更新消息
return i;
}
//该方法在doInBackground()方法执行完成之后再运行,并且运行在UI线程当中
//onPostExecute(Integer result)里的参数为doInBackground()方法的返回值
//主要用于将异步任务执行的结果展示给客户。
@Override
protected void onPostExecute(Integer result) {
redirectMain(result);//这是一个页面跳转的方法,用于更新UI,此处不给出
}
//在doInBackground()方法中,每次调用publisProgress()方法之后,都会触发该方法,该方法执行在UI线程当中,因此可以更新UI
//主要用于在异步执行的过程当中对用户进行提示,如更新进度条等
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
System.out.println("onprogressUpdate=====>"+ Thread.currentThread().getName());
super.onProgressUpdate(values);
bar_seva.setProgress(values[0]);//更新进度条
}
}
本例在UI中有以下语句:AnsLogin ansk=new AnsLogin();ansk.execute("");是对AnsLogin类的使用。
/*
* 生成该类的对象,并调用其execute()方法之后(AnsLogin ansk=new AnsLogin();ansk.execute("");)
* 首先执行onPreExecute()方法
* 其次是执行doInBackground()方法
*/
class AnsLogin extends AsyncTask<String, Integer, Integer> {
@Override
// 该方法将在执行实际的后台操作前被UI thread调用(也就是前面所说的:调用其execute()方法之后,首先执行onPreExecute()方法),其运行在UI线程当中。
//主要用于在异步操作之前做一些准备工作,如在页面出现转菊花提示:正在下载数据等
protected void onPreExecute() {
super.onPreExecute();
}
// 将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中,因此不能在此方法中更新UI线程。
// 这里将主要负责执行那些很耗时的后台计算工作,如请求服务器参数等。
// 在该方法中,每次通过调用方法:publishProgress(i),都可以触发onProgressUpdate()方法
//doInBackground(String... params)的参数为UI线程中调用execute()方法时所传递过来的参数,如本例中ansk.execute("")就传了空的字符串“”
@Override
protected Integer doInBackground(String... params) {
resXML = ServiceInfo.Login(txtId.getText().toString(),txtPwd.getText().toString());
int i = AnalysisXML.AnalysisResult(resXML).getResultCount();
// publishProgress(i);//触发onProgressUpdate()方法,发布更新消息
return i;
}
//该方法在doInBackground()方法执行完成之后再运行,并且运行在UI线程当中
//onPostExecute(Integer result)里的参数为doInBackground()方法的返回值
//主要用于将异步任务执行的结果展示给客户。
@Override
protected void onPostExecute(Integer result) {
redirectMain(result);//这是一个页面跳转的方法,用于更新UI,此处不给出
}
//在doInBackground()方法中,每次调用publisProgress()方法之后,都会触发该方法,该方法执行在UI线程当中,因此可以更新UI
//主要用于在异步执行的过程当中对用户进行提示,如更新进度条等
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
System.out.println("onprogressUpdate=====>"+ Thread.currentThread().getName());
super.onProgressUpdate(values);
bar_seva.setProgress(values[0]);//更新进度条
}
}
相关文章推荐
- android.os.AsyncTask<String, Void, Integer>
- android.os.AsyncTask<String, Void, Integer>
- 扫描SD卡异步任务new AsyncTask<Integer, Integer, String>()
- 使用<a>标签提交action会执行两次后台方法的原因(反射机制小实例问题的解决)
- Java利用反射来获取一个方法的 范型化参数 Vector<Integer>的类型
- 【java】反射(二)——泛型集合(在ArrayList<Integer>中加入String对象)
- Java 中的 int 与 Integer 用于 List<Integer> 时,以及通过打印变量检測程序执行和函数调用次数计数
- <leetcode系列> String to Integer (atoi) 以及atoi源码实现
- java反射机制初步认识<二>获取并执行方法
- Map<String, String> 遍历的四种方法
- Java学习笔记(八):Map<stirng,string>的遍历的四种方法
- C#_delegate - Pair<T> & 简单顺序逆序 & 方法委托(在Pair类下)&枚举类型 混搭使用
- cpp如何快速安全地将文件读入字符串string或字符数组vector<string>的方法
- AsyncTask<String, Integer, Bitmap>异步加载
- vector<char> 容器初始化 string 对象 两种方法
- <IOS>视图控制器执行顺序详解
- Map<String, String> 遍历的四种方法
- ArrayList<Integer> list = new ArrayList<Integer>(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
- UIScrollView控件的常用属性与<UIScrollViewDelegate>协议中各个方法的触发时机
- Map<String, String> 遍历的四种方法