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

来源:互联网 发布:绝地求生 苦大师优化 编辑:程序博客网 时间:2024/04/25 09:32

           
    博客分类:
  • Android
 

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
原创粉丝点击