2 实现说明
实现流程
Step One 弹出进度条对话框
Step Two 执行线程,在线程中实现数据的异步加载
Step Three 在线程数据加载完成后,调用 Handler 并集合数据,更新界面
//添加异步操作 m_Dialog=ProgressDialog.show(m_context, "请等待...", "正在下载安装文件,请稍后...",true); //mRegsiterHandler.sleep(100); new Thread(new Runnable(){ @Override public void 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 = new byte[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() { public void run() { if(result==2) install(); else Toast.makeText(m_context, "下载文件失败,请检查网络连接", Toast.LENGTH_SHORT).show(); } }); m_Dialog.dismiss(); }}).start(); }