2010-09-13 18 views
5

Bir uygulamadan çıkarken basit bir tost göstermek istiyorum. Sorun şu ki, tost gösterilmiyor. Bunun sebebinin, aktivitenin bittiği ya da System.exit(0)'dan kaynaklandığı, ancak nasıl çözeceğimi bilmediğimi düşünüyorum. Kimsenin ipucu var mı? Teşekkürler!! Benim etkinlikteAndroid: Uygulama bittikten sonra tost göster/etkinlik

Aşağıdaki kod var: Uygulaması'nda

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

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

Ve Metot çıkış:

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

cevap

4

Size oldukça beri System.exit(0); çağırmaktan daha da uygulamayı kapatmak için bitiş dediğimiz tavsiye edilir Bu yaklaşım uygulamanızı tamamen ortadan kaldıracaktır. Tüm işleminizi System.exit() gerçekleştirir. finish() sadece faaliyetlerinizi gizler, durdurur ve yok eder. Prosesiniz hala çalışıyor.

Etkinliğinizi kapatmak için finish();'u kullanabilirsiniz ve bu sorunu özer.

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

+0

Üzgünüz, doğru tarif etmedim: Uygulama, Uygulama sınıfını genişletiyor ve bunun için bir Etkinlik değil. –

+0

Q nasıl tost, herhangi bir fikir gösterilecek? – ankitjaininfo

+0

Evet, ancak bir etkinliğe genişletmiyor. İçeriğin etkinlik sınıfından sınıf genişletme uygulamasına geçmesi gerektiğini ve böylece Tostu orada gösterebileceğini düşünüyorum. – DeRagan

0

Sadece sistemin işlemi öldürdü önce tost göstermek için zaman tanımak için yeni bir iş parçacığı kapalı ateş etti. Bunu kontrol edin:

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