`

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

 
阅读更多

效果图

 

 

 

实现说明

 

   实现流程

 

  Step One 弹出进度条对话框

 

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

 

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

 

 

 

3源码

 

//添加异步操作  
             m_Dialog=ProgressDialog.show(m_context, "请等待...", "正在下载安装文件,请稍后...",true);
             //mRegsiterHandler.sleep(100);
new Thread(new Runnable(){

                    @Override
                    publicvoid run() {
                   //加载数据
                         result=0;
                          try{
                              //下载文件
                              String url="http://00.00.00.00:80/nationaltest.html";
                                HttpClient client =new DefaultHttpClient();     
                              HttpGet get =new HttpGet(url);     
                              HttpResponse response;     
                              
                              response = client.execute(get);     
                              HttpEntity entity = response.getEntity();     
                              long length = entity.getContentLength();     
                              InputStream is = entity.getContent();     
                              FileOutputStream fileOutputStream =null;     
                              if (is !=null) {     
                                  File file =new File(Environment.getExternalStorageDirectory(), "nationaltest.apk");     
                                  fileOutputStream =new FileOutputStream(file);     
                                  byte[] buf =newbyte[1024];     
                                  int ch =-1;     
                                  while ((ch = is.read(buf)) !=-1) {     
                                      fileOutputStream.write(buf, 0, ch);     
                                  }     
                             }     
                             fileOutputStream.flush();     
                             if (fileOutputStream !=null) {     
                                 fileOutputStream.close();     
                             }  
                             result=2;
                          }
                         catch(Exception ex){
                             result=-1; 
                         }           
                        
                    //更新界面
                         // Update the progress bar 
                         mHandler.post(new Runnable() {     
                             publicvoid run() {                          
                                 if(result==2)
                                      install();
                                       else
                                           Toast.makeText(m_context, "下载文件失败,请检查网络连接", Toast.LENGTH_SHORT).show();    
                                 }                  
                             });
                        
                    
                     m_Dialog.dismiss();
                    }}).start();
             
              }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics