Exibindo um ProgressDialog no Android

2 Flares Twitter 0 Facebook 0 Google+ 2 LinkedIn 0 Filament.io 2 Flares ×

Quando a aplicação executa uma operação um pouco demorada, como um acesso a uma URL por exemplo, fica tudo travado até que o comando termine de ser executado.

private ProgressDialog dialogo;

private class ProgressTask extends AsyncTask<Void, Void, Boolean> {
	public ProgressTask() {
	}

	@Override
	protected void onPreExecute() {
		// configura o dialogo e inicia sua exibição
		dialogo = new ProgressDialog(this);
		dialogo.setMessage("Sincronizando informações.");
		dialogo.setTitle("Sincronizando");
		dialogo.setCancelable(true);
		dialogo.setProgressStyle(ProgressDialog.STYLE_SPINNER);
		dialogo.show();
	}

	@Override
	protected void onPostExecute(final Boolean success) {
		if (dialogo.isShowing()){
			// fecha o dialogo
			dialogo.dismiss();
		}
	}

	@Override
	protected Boolean doInBackground(Void... params) {
		try{    
			// define a url que será acessada
			StringBuffer strUrl = new StringBuffer("http://www.sua_url.com.br/");
			try {
				// transforma a string em URL
				URL url = new URL(strUrl.toString());			
				// faz a conexão com a URL
				URLConnection con = url.openConnection();
				// captura o stream de retorno da URL
				BufferedReader in = new BufferedReader(
						new InputStreamReader(con.getInputStream()));
				// para o meu exemplo só estou pegando a primeira linha do retorno
				String linha = in.readLine();
				// fecha o stream
				in.close();
			} catch (Exception e) {
				e.printStackTrace();
			}

		} catch (Exception e){
			Log.e("tag", "error", e);
			return false;
		}
	}
}

Esse é o código para criar o dialogo informando ao usuário que o sistema está ocupado mas não está travado. Para iniciar o dialogo utilize o comando “new ProgressTask().execute();”. Com isso a experiência de uso de sua aplicação ficará bem melhor, porquê nenhum usuário gosta de ver uma tela congelada no seu celular.