2010-09-13 8 views
5

Quiero mostrar un brindis simple al salir de una aplicación. El problema es que la tostada no se muestra. Supongo que es porque la actividad ha terminado o por System.exit(0), pero no sé cómo resolverlo. ¿Alguien tiene un consejo? ¡¡Gracias!!Android: mostrar tostadas después de terminar la aplicación/actividad

En mi actividad Tengo el siguiente código:

Toast.makeText(this,"Exit application.",Toast.LENGTH_SHORT).show(); 
exitApp(); 

public void exitApp(){ 
    App.getInstance().exit(); 
    finish(); 
} 

Y la salida mehod en la App:

public void exit() { 
    System.exit(0); 
} 

Respuesta

4

Es aconsejable que llame acabado de cerrar su aplicación en lugar de llamar a System.exit(0); desde este enfoque matará tu aplicación por completo. System.exit() mata todo el proceso. finish() solo oculta, detiene y destruye tu actividad. Tu proceso aún se está ejecutando.

Puede simplemente usar finish(); para cerrar su actividad y esto debería resolver su problema.

http://groups.google.com/group/android-developers/browse_thread/thread/63de8a9cdffa46a3?pli=1

+0

Lo sentimos, no lo describí correctamente: la aplicación amplía la clase de la aplicación y, por lo tanto, no es una actividad. –

+0

la Q es cómo mostrar brindis, ¿alguna idea? – ankitjaininfo

+0

Sí, pero no lo está extendiendo a una actividad. Creo que el contexto debe pasarse de la clase de actividad a su aplicación de extensión de clase para que pueda mostrar el Toast allí. – DeRagan

0

acabo disparó un nuevo hilo para dar tiempo a la tostada para mostrar antes de que el proceso del sistema se mató. Échale un vistazo:

private Runnable checkForAdBlockRun = new Runnable() { 
    @Override 
    public void run() { 
     boolean blocked = false; 
     try { 
      blocked = AdBlockUtil.areAdsBlocked(); 
      if (blocked) { 
       Log.w(TAG, "Ads are blocked on this device."); 
       adBlockHandler.sendEmptyMessage(0); 

      } 
     } 
     catch (Exception e) { 
      Log.w(TAG, "Could not check for ad blocking", e); 
     } 
    } 
}; 

private Handler adBlockHandler = new Handler() { 
    @Override 
    public void handleMessage(Message message) { 
     Toast.makeText(instance, "Can not run this app with adblock on", Toast.LENGTH_LONG).show(); 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        Thread.sleep(3000); 
       } 
       catch (Exception e) { } 
       System.exit(0); 
      } 
     }).start(); 
    } 
}; 
Cuestiones relacionadas