2010-09-13 9 views
5

Ich möchte einen einfachen Toast zeigen, wenn Sie eine Anwendung beenden. Das Problem ist, dass der Toast nicht angezeigt wird. Ich nehme an, es ist, weil die Aktivität beendet ist oder wegen System.exit(0), aber ich weiß nicht, wie man es löst. Hat jemand einen Tipp? Vielen Dank!!Android: Zeige Toast nach Abschluss der Anwendung/Aktivität

In meiner Tätigkeit habe ich den folgenden Code:

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

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

Und die mehod Ausfahrt in App:

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

Antwort

4

Es ist ratsam, dass Sie Finish rufen Sie Ihre Anwendung zu schließen, anstatt System.exit(0); Aufruf seit Dieser Ansatz wird Ihre Anwendung vollständig beenden. System.exit() tötet Ihren gesamten Prozess. finish() versteckt, stoppt und zerstört Ihre Aktivität. Ihr Prozess läuft noch.

Sie können einfach finish(); verwenden, um Ihre Aktivität zu schließen, und dies sollte Ihr Problem lösen.

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

+0

Sorry, ich habe es nicht richtig beschrieben: App erweitert die Application-Klasse und ist daher keine Aktivität. –

+0

das Q ist, wie man Toast zeigt, irgendeine Idee? – ankitjaininfo

+0

Ja, aber es erweitert es nicht auf eine Aktivität. Ich denke, der Kontext sollte von der Aktivitätsklasse an seine Klassenerweiterungsanwendung übergeben werden, damit er dort den Toast zeigen kann. – DeRagan

0

Ich feuerte nur einen neuen Thread aus, um genügend Zeit für die zeigen, Toast, bevor das System Prozess abgebrochen wird. Schau es dir an:

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(); 
    } 
};