ProgressDialog+Thread实现弹出进度条数据异步加载(配有效果图)

本文详细介绍了如何使用Java实现异步数据加载,并通过线程处理数据,确保UI界面的实时更新。通过实例展示了从请求数据到更新界面的完整流程,包括创建对话框展示进度、异步执行数据加载任务、利用Handler同步数据与界面状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2 实现说明

实现流程

  Step One 弹出进度条对话框

  Step Two 执行线程,在线程中实现数据的异步加载

  Step Three 在线程数据加载完成后,调用Handler并集合数据,更新界面

Java代码 复制代码 收藏代码
  1. //添加异步操作   
  2.              m_Dialog=ProgressDialog.show(m_context, "请等待...", "正在下载安装文件,请稍后...",true); 
  3.              //mRegsiterHandler.sleep(100); 
  4.              new Thread(new Runnable(){ 
  5.  
  6.                     @Override 
  7.                     public void run() { 
  8.                    //加载数据 
  9.                          result=0; 
  10.                           try{ 
  11.                               //下载文件 
  12.                               String url="http://00.00.00.00:80/nationaltest.html"; 
  13.                                 HttpClient client = new DefaultHttpClient();      
  14.                               HttpGet get = new HttpGet(url);      
  15.                               HttpResponse response;      
  16.                                
  17.                               response = client.execute(get);      
  18.                               HttpEntity entity = response.getEntity();      
  19.                               long length = entity.getContentLength();      
  20.                               InputStream is = entity.getContent();      
  21.                               FileOutputStream fileOutputStream = null;      
  22.                               if (is != null) {      
  23.                                   File file = new File(Environment.getExternalStorageDirectory(), "nationaltest.apk");      
  24.                                   fileOutputStream = new FileOutputStream(file);      
  25.                                   byte[] buf = new byte[1024];      
  26.                                   int ch = -1;      
  27.                                   while ((ch = is.read(buf)) != -1) {      
  28.                                       fileOutputStream.write(buf, 0, ch);      
  29.                                   }      
  30.                              }      
  31.                              fileOutputStream.flush();      
  32.                              if (fileOutputStream != null) {      
  33.                                  fileOutputStream.close();      
  34.                              }   
  35.                              result=2; 
  36.                           } 
  37.                          catch(Exception ex){ 
  38.                              result=-1;  
  39.                          }            
  40.                          
  41.                     //更新界面 
  42.                          // Update the progress bar  
  43.                          mHandler.post(new Runnable() {      
  44.                              public void run() {                           
  45.                                  if(result==2) 
  46.                                       install(); 
  47.                                        else 
  48.                                            Toast.makeText(m_context, "下载文件失败,请检查网络连接", Toast.LENGTH_SHORT).show();     
  49.                                  }                   
  50.                              }); 
  51.                          
  52.                      
  53.                      m_Dialog.dismiss(); 
  54.                     }}).start(); 
  55.               
  56.               } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值