用ProgressDialog带进度条更新

折磨几个晚上的带进度条更新问题终于解决,完美解决下载在多线程中运行,sqlite在主线程中使用的问题
public void doProgressUpdate() {	
		
		
		final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
		progressDialog.setTitle("更新");
		progressDialog.setMessage("更新中,请稍候...");
		progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
		progressDialog.setProgress(0);
		progressDialog.setMax(100);
		progressDialog.show();			
		
		final Runnable afterThread = new Runnable() {
			public void run() {
				try {
					Log.e("更新", flag);
				} catch (Exception e) {
					e.printStackTrace();
				} 
			}
		};	
		final Handler handler = new Handler() {
			public void handleMessage(Message msg) {
				if (msg.what >= 100) {
					afterThread.run();
					progressDialog.cancel();
					progressDialog.dismiss();
				}
				progressDialog.setProgress(msg.what);
				super.handleMessage(msg);
			}
		};	
		
		Runnable doThread = new Runnable() {
			public void run() {
				try {							
					// Looper.loop();
					flag="aaaa";
					Thread.sleep(1000);
					handler.sendEmptyMessage(20);
					Thread.sleep(1000);
					handler.sendEmptyMessage(40);
					Thread.sleep(1000);
					handler.sendEmptyMessage(60);
					Thread.sleep(1000);
					handler.sendEmptyMessage(80);
					Thread.sleep(1000);
					handler.sendEmptyMessage(100);
					// ///
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					progressDialog.cancel();
					progressDialog.dismiss();
				}
			}
		};		
		new Thread(doThread).start();
	}

猜你喜欢

转载自hszdz.iteye.com/blog/1758567
今日推荐