分享

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

 aaie_ 2012-09-24

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.               }   

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多