Cómo mostrar brindis en AsyncTask en doInBackground

En una de mis actividades estoy usando AsyncTask . En doInBackground() estoy haciendo llamadas a varios métodos. En uno de estos métodos obtengo una excepción, por lo que en el bloque catch quiero mostrar el error en el Toast. Sé que puedo usar Log , pero aún así prefiero Toast. Entonces, ¿cómo puedo usar Toast en AsyncTask en doInBackground ()?

Puede envolver Toast en runOnUIThread() pero esta no es la mejor solución.
Debería establecer un indicador booleano en el bloque catch cuando ocurra un error, luego mostrar un Toast apropiado en onProgressUpdate() , onPostExecute() , o cualquiera de los otros métodos con acceso UI siempre que el indicador sea true .

regresar de doInBackground como

 protected String doInBackground(String... params){ //some code try{ //some code }catch(Exception e){ return "Exception Caught"; } return someValidResult; } protected void onPostExecute(String result){ if(result.equalsIgnoreCase("Exception Caught")){ //Display Toast }else{ // // whatever you wana do with valid result } } 

Escriba el siguiente código donde tiene que mostrar brindis en el método doInBackground()

 runOnUiThread(new Runnable() { public void run() { Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show(); } }); 
  • Por cierto: si usas Fragments , debes llamar a runOnUiThread(...) través de tu actividad:

getActivity().runOnUiThread(...)

Puede mostrarlo en un método que tenga acceso al hilo de la interfaz de usuario como onPreExecute() , onProgressUpdate() y onPostExecute()

Crea un objeto de controlador y ejecuta todos tus mensajes de Toast con eso.

 @Override protected Void doInBackground(Void... params) { Handler handler=new handler(); handler= new Handler(context.getMainLooper()); handler.post( new Runnable(){ public void run(){ Toast.makeText(context, "Created a server socket",Toast.LENGTH_LONG).show(); } }); } 
 runOnUiThread(new Runnable() { public void run() { Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show(); } }); 

funciona perfectamente bien para mostrar brindis en el método doInBackground ()

 activity.runOnUiThread(new Runnable() { public void run() { Toast.makeText(activity, "Toast teaxt", Toast.LENGTH_SHORT).show(); } }); 

prueba este código

 void showError(final String err) { runOnUiThread(new Runnable() { public void run() { Toast.makeText(downloadprogress.this, err + "error in download", Toast.LENGTH_LONG) .show(); } }); }