亚搏体育app官网入口
Mou Mou Jidian Generator
发电机维修 发电机回收
发电机出售 发电机租赁
客户统一服务热线

0694-128978373
17299585425

您的位置: 主页 > 新闻中心 > 常见问题 >

Android使用AsyncTask后监听异步加载完毕的动作

本文摘要:AsyncTask的用于方式在网上有很多事例,用于一起也十分的便捷。这儿也不详细讲到确立的用于方式了,同学们能够Google一下,许多。

亚搏手机在线登录入口

AsyncTask的用于方式在网上有很多事例,用于一起也十分的便捷。这儿也不详细讲到确立的用于方式了,同学们能够Google一下,许多。  情景模拟仿真在我们在载入一个列表的情况下,例如GridView,此刻大家充分考虑不阻塞UI的做法,一般不容易用于进程Thread、Timer或是用于AsyncTask,而这种操作者全是在在后台管理此外进一个进程让我们去找数据信息,确立得到 的数据信息务必用于Handler去改版UI,AsyncTask也是一样用于到的Handler仅仅它将HandlerPCB在了onPostExecute继续执行操作者中。而这一操作者很有可能会造成一个难题,例如你有一个列表改版数据库查询用于到的是AsyncTask多线程操作者的方法改版UI,但你的市场的需求是当我们一进来这一列表就统计数据这一列表的数据信息的总数或是让某一行数据信息的情况为选秀权情况。

传统式做法是必需new一个AsyncTask类让它execute();以后不容易再作操作者UI。好点子是对的,但有一个难题我们要注意到,因为它是多线程获取数据的方法,但你的信息量比较多或许查看数据信息务必一定的時间的情况下,这时候用于AsyncTask继续执行多线程载入后改版UI再作操作者UI目标,很有可能会报空指针。  这个问题的造成是,大家都告知编码的继续执行是由上而下继续执行,如果你用于多线程获取数据的情况下,编码让你来继续执行多线程操作者就不管了(线程同步),而以后会向下继续执行编码,你下边的编码便是操作者列表里边的UI,这时候显而易见,多线程获取数据还没有完成还没有对你的UI进行改版,这种你的列表理应是机的,而操作者一个机的列表就不容易报空指针。  分析问题  用于过AsyncTask的同学们都告知一个多线程获取数据数最多要改变下列这两个方式:  doInBackground后台管理继续执行,比较用时的操作者都能够放进这儿。

亚搏手机在线登录入口

注意这儿没法必需操作者UI。  onPostExecute相当于Handler应急处置UI的方法,在这里里边能够用于在doInBackground得到 的結果应急处置操作者UI。

  有适度得话你要得改变下列这三个方式,但并不是必不可少的:  onProgressUpdate能够用于时间轴降低客户体验度。  onPreExecute这儿是终端用户启用Excute时的控制模块  onCancelled客户启用中断时,要保证的操作者  依据上边的构思,能够显出,最终数据信息载入并说明出去这一系列产品的操作者都会onPostExecute这一方式里边,那麼怎样监视全部UI都己经在onPostExecute里边应急处置顺利完成了,再作去继续执行我们自己要操作者呢?  解决困难  这儿得到自己解决困难这一难题的构思,有更优好点子的盆友亲睐跟贴协同研究。

  最先开创一个控制模块  privateinterfaceisLoadDataListener{  publicvoidloadComplete();  }  申明这一控制模块自变量  privateisLoadDataListenerloadLisneter;  给控制模块取值,得到 控制模块目标  publicvoidsetLoadDataComplete(isLoadDataListenerdataComplete){  this.loadLisneter=dataComplete;  }  以后在AsyncTask的onPostExecute应急处置UI顺利完成后启用该控制模块,下边得到一个我之前新项目用于到的AsyncTask类:  classloadGridAsyncTaskextendsAsyncTask《Integer,Integer,AppsAdapter》{  privateintpoindex;  publicloadGridAsyncTask(intpositionindex){  this.poindex=positionindex;  }  @Override  protectedAppsAdapterdoInBackground(Integer.。.params){  //TODOAuto-generatedmethodstub  //mAppsModel.clear();  Cursortemp=dbHelper.queryPageById(poindex);  loadPage(mApps,temp);  temp.close();  returnnewAppsAdapter(STB.this,mAppsModel);  }  @Override  protectedvoidonPostExecute(AppsAdapterresult){  gridViewExtitemGrid=(gridViewExt)viewFlipper  .getChildAt(poindex);  itemGrid.setColumnCount(pageColumnCount);  itemGrid.setAdapter(result);  if(loadLisneter!=null){  loadLisneter.。


本文关键词:Android,使用,AsyncTask,后,监听,异步,加载,完毕,亚搏体育app官网入口

本文来源:亚搏体育app官网入口-www.zhonglian-hg.com

Copyright © 2000-2022 www.zhonglian-hg.com. 亚搏体育app官网入口科技 版权所有  ICP备案:ICP备93228363号-2