标签:asynctask 异步 线程 doinbackgr onpostexcu
对于异步操作的原理我就不讲了,在这我着重讲怎么使用异步操作的doinbackground onProgressUpdate onCancelled onPostExecute这四个方法
doinbackground 我的理解效果相当于Thread里面的run,这样理解就容易多了,因为大家可能对Thread都很熟悉,你可以把你想要首先处理的事物放在这里,但是有很多人就会在这里更新ui操作,这是不可以的 ,要更新ui操作我们就要讲到onPostExecute这个方法啦
onPostExecute我们把它先override 出来看看他的结构
@Override
protected void onPostExecute(List<GovernmentInstitutionBean> result) {}
我们可以看到方法里面有一个result参数,类型是自己定义的,那么这个result是从哪里传来的呢,没错了,通过doinbackground处理将结果返回给
onPostExecute方法result接收,在这个方法里面更新ui操作,List这个类型也不是凭空而来,而是在doinbackground方法里面也要设置
首先你得把方法的返回类型改一下
protected List<GovernmentInstitutionBean> doInBackground(Void... arg0) {
然后你得把类的参数改一下
class Task1 extends AsyncTask<Void, Void, List<GovernmentInstitutionBean>>
在doinbackground方法里面有个return 把你想要返回的数据return
override onPostExecute方法自然就能接收到了
讲到这里你应该会简单的使用异步操作了,如果你还想要对它更细化的控制,异常的处理那么 onProgressUpdate onCancelled 这两个方法就呼吁而出了
onProgressUpdate 就是在你正在进行异步操作的时候提示用户你正在操作,让你的应用体验更加好,那么这个方法的使用也很简单
首先你得覆盖它
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
}
然后你得触发它
publishProgress();
在你想要触发正在处理的地方添上就行,至于你在onProgressUpdate里面作什么,一般都是弹窗,我这里是用progressdialog提示正在加载,那么就是这样的
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
pd = ProgressDialog.show(IndustrialPark_Activity.this, "提示信息",
"正在加载…");
}
在doinbackground方法一开始就弹出正在加载
protected List<GovernmentInstitutionBean> doInBackground(Void... arg0) {
// TODO Auto-generated method stub
try {
publishProgress();
.....
.....
......
}
那么这里要注意的是,如果加载成功的话就会跳到onpostexcute方法里面,如果加载失败的话呢,那么我们要让它跳到oncancelled方法里面,我们try catch一下doinbackground方法里面的处理,在catch里面加上
cancel(true);
这句代码,无论跳到哪都要记得你的pd还没消失呢,所以在两个方法里面都要写上让它消失的代码handler。sendmeesage…();
那么整个流程就讲的差不多了,喜欢的请点赞,评论,不喜勿喷。
版权声明:本文为博主原创文章,未经博主允许不得转载。
AsyncTask doinbackground onProgressUpdate onCancelled onPostExecute的基本使用
标签:asynctask 异步 线程 doinbackgr onpostexcu
原文地址:http://blog.csdn.net/a4384142/article/details/47775499