I want to update download progress of progress dialog but AsyncTask getting hangs when using BufferedReader. Not calling publishProgress and not updating progress dialog in onProgressUpdate. Also, it's not printing Log into while loop.
I have tested using printing Log in my code.
- First Log is printing in
LogCat - Second Log is not printing
The Third Log also not printing and not executing method
publishProgress.private class GetData extends AsyncTask<String, Integer, String>{ private ProgressDialog dialog; @Override protected void onPreExecute() { super.onPreExecute(); dialog = new ProgressDialog(HomeScreen.this); dialog.setTitle("Be Patient"); dialog.setMessage("Loading data for first time use only. Please don't close the application."); dialog.setCancelable(false); dialog.setIndeterminate(true); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.show(); } @Override protected void onProgressUpdate(Integer... progress) { super.onProgressUpdate(progress); dialog.setIndeterminate(false); dialog.setMax(100); dialog.setProgress(progress[0]); } @Override protected String doInBackground(String... params) { String serverResponse = null; BufferedReader in = null; java.net.URL myLink; try { Log.e("AsyncTask", "This log is printing"); myLink = new java.net.URL(params[0]); in = new BufferedReader(new InputStreamReader(myLink.openStream())); Log.e("AsyncTask", "This log not printing"); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); publishProgress(50); // Not executing : Default value set is 50 just for cheecking. Log.d("AsyncTask", "This log also not printing & publishProgress not executing"); } serverResponse = response.toString(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (in != null) in.close(); } catch (IOException e) { e.printStackTrace(); } } return serverResponse; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); if (!HomeScreen.this.isFinishing() && dialog != null) { dialog.dismiss(); } } }