Tengo un servicio que supervisa una conexión de socket. Cuando se pierde la conexión, debe mostrarse un Toast informando al usuario que se está reconectando. Esto funciona bien la primera vez. Después de eso, veo el enqueueToast en el registro, pero la tostada no se muestra. Cualquier idea es apreciada. Pensé que esto sería una cosa fácil de agregar, pero debo estar perdiendo algo.Toast de Android iniciado desde el servicio solo muestra una vez
entrada de registro de
INFO/NotificationService (118): enqueueToast PKG = com.abc [email protected] duración = 1
Código que llama al pan tostado
public class ConnectionService extends Service
{ .....
public void restartConnection()
{
try
{
Log.i(this.toString(), "Attempting to reconnect...");
// increase the wait between each retry until the max is reached
int sleepTime = reconnectCounter * MIN_RECON_WAIT;
if (sleepTime > MAX_RECON_WAIT)
{
sleepTime = MAX_RECON_WAIT;
}
String msg = "The connection has been lost. Restart attempt will start in: " + sleepTime/1000 + " seconds";
Log.i(this.toString(), msg);
Toast.makeText(getApplicationContext(), msg , Toast.LENGTH_LONG).show();
Thread.sleep(sleepTime);
// increment the counter
reconnectCounter++;
this.startConnectionThread();
}
catch (Exception e)
{
Log.e(this.toString(), "Exception: " + e.toString());
e.printStackTrace();
}
}// end retartConnection
Probablemente sea un problema de enhebrado. ¿Estás llamando a Toast.show() desde el hilo de UI o desde uno separado? ¿Podría dar un poco más de contexto a este método? – Vuk
Llamado desde dentro de una clase de servicio que se inició con una llamada bindService desde la actividad que se muestra primero al usuario. Esperaba usar una llamada runOnUiThread para mostrar el brindis, pero no pude encontrar la manera de usar eso en el Servicio. – bursk