Android异步处理

来源:互联网 发布:淘宝复制进入app技术 编辑:程序博客网 时间:2024/06/05 00:10
在Android 中,不能在主UI线程里处理耗时操作,否则会造成阻塞,时间过长时(超过5秒),甚至造成系统提示是否要kill该进程。

(1)使用线程
注意不能在非主UI线程中更新界面,有时需结合Handler使用.

prgDialog = ProgressDialog.show(GbcJoy.this,"wait","data loading...", true);Thread th = new Thread(new Runnable(){ public void run() {  //prgDialog = ProgressDialog.show();//对话框的显示不能放在此处  loadData();//time consuming operation  //updateListView();//也不能在些更新主UI线程界面  prgDialog.dismiss(); }});th.start(); 


 

如果需要在耗时操作后,更新或通知主线程,可以通过如下方法:
(2) 使用Handler
 

 prgDialog = ProgressDialog.show(GbcJoy.this,"wait","data loading...", true);  new Thread()  {   public void run()   {    loadData();//time consumng operation    handler.sendEmptyMessage(0);//也可以使用下面的postUpdateList();   }  }.start(); //其实下面两个方法都是在主UI线程里完成的(所以最好不要有耗时操作) //即使把该函数放在一个子线程里面去调,也是一样 public void postUpdateList()     {      adpHandler.post(new Runnable()       {       public void run()        {        updateListView();    prgDialog.dismiss();       }      });     } private Handler handler =new Handler() {  @Override  //当有消息发送出来的时候就执行Handler的这个方法,这里不能做耗时操作,否则还是会阻塞主UI线程  public void handleMessage(Message msg)  {   super.handleMessage(msg);   updateListView();   prgDialog.dismiss();  } };


 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 10几天宝宝咳嗽怎么办 孩子为什么老说梦话怎么办 面对调皮的孩子怎么办 宝宝咳嗽无痰怎么办 孩子经常做噩梦怎么办 孩子干咳的厉害怎么办 外遇有了孩子该怎么办 有个无赖父亲怎么办 孩子之间发生争执怎么办 被打耳光后耳鸣怎么办 被打了耳鸣怎么办 打到鼻子流鼻血怎么办 一岁多宝宝有痰怎么办 一岁半咳嗽有痰怎么办 12岁说话不清楚怎么办 梦见前夫打孩子怎么办 小儿咳嗽带痰怎么办 孩子扁桃体发炎咳嗽怎么办 一岁宝宝总有痰怎么办 四岁宝宝总有痰怎么办 5岁宝宝总有痰怎么办 一岁宝宝有痰咳不出怎么办 三岁宝宝有痰咳不出怎么办 孩子不听话打她怎么办 孩子笨上学吃力怎么办 孩子学习就睡着怎么办 孩子对父母大喊大叫怎么办 老师面对熊孩子怎么办 妈妈故意打孩子怎么办 老是被妈妈打怎么办 父母老打骂孩子怎么办 后妈总是欺负我怎么办 小朋友屁股被打紫了怎么办 儿童被咬出血怎么办 小宝宝蚊子咬了怎么办 幼儿被咬了怎么办 把孩子屁股肿打紫怎么办 小孩老是咬小孩怎么办 宝宝对蚊子过敏怎么办 胳膊打红了怎么办 孩子生气摔东西怎么办