Android: hoe de app correct te sluiten na een fout

I added an exceptionhandler for unhandled exceptions, to know that the app has crashed on the next app start:

@Override
public void uncaughtException(Thread thread, Throwable ex) {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("crashed", "yes");
    editor.commit();
}

Ik heb de handler toegevoegd via:

Thread.setDefaultUncaughtExceptionHandler(this);

Nu is het zo: sinds ik de handler heb toegevoegd, gedraagt ​​de app zich anders bij fouten:

  • Voordat ik de handler toevoeg, kreeg ik een melding dat de app is gecrasht.

  • Nu, na het toevoegen van de handler bevriest de app gewoon en na een tijdje toont android me een popup die me vertelt dat de app niet meer reageert en of ik nog langer wil wachten. Dit is geen goede IMO. Alle hints, hoe om correct te sluiten na een crash van een applicatie?

2
Van een activiteit tot afsluiten hoeft u alleen maar finish() aan te roepen.
toegevoegd de auteur James Cross, de bron
@Styx als ik afsluit() in mijn fout-handler, er verschijnt helemaal geen popup. Dat is ook niet wat ik van plan was.
toegevoegd de auteur stoefln, de bron

2 antwoord

u kunt de oorspronkelijke uitzonderingshandler opslaan, zodat u deze kunt gebruiken nadat u klaar bent met uw eigen aangepaste bewerkingen voor de niet-verwerkte uitzondering. iets zoals dit:

//Inside UncaughtExceptionHandler.java:
…
private UncaughtExceptionHandler defaultUEH;

public DefaultExceptionHandler() 
  {
  this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
  }

@Override
public void uncaughtException(Thread t, Throwable e) 
  {
  //do anything you wish about the Throwable e :getStackTrace(),getCause(),getClass()...
  //call the original uncaught exception handler:
  defaultUEH.uncaughtException(t, e);
  }
4
toegevoegd
wat bedoelt u?
toegevoegd de auteur android developer, de bron
dat veranderde ook het standaardgedrag, ik weet niet waarom, hoewel ...
toegevoegd de auteur stoefln, de bron

Ik stel voor dat u uw logica integreert met ACRA , zodat deze de problemen van crashrapportage aankan en opruimen.

0
toegevoegd
Ik gebruik Crittercism al, wat uitstekend werkt, maar de methode Crittercism.didCrashOnLastAppLoad() lijkt te buggen ...
toegevoegd de auteur stoefln, de bron