I am handling any uncaught exceptions that occur in my application via:
Thread.setDefaultUncaughtExceptionHandler(this);
were this is my launcher Activity implementing UncaughtExceptionListener. I handle the exception and send it off to my log server just fine, however, my application then doesn't end. It just runs along as a zombie until the home or back button is pressed. How can I kill the process after handling the exception?
Edit
Here is a test and working activity that throws an uncaught exception that is to be caught (by Thread) and handled. The toast is never posted and the process goes zombie once the exception is logged.
class TestActivity extends Activity implements UncaughtExceptionListener {
@Override public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Thread.setDefaultUncaughtExceptionHandler(this);
throw new RuntimeException("I'm a destuctive booger.");
setContentView(R.layout.activity_test);
}
@Override public void uncaughtException(Thread thread, Throwable toss) {
Log.e(TAG, "An uncaught exception has been recieved.", toss);
Toast.makeText(this, "Big Error", Toast.LENGTH_LONG).show();
}
}
I did some testing with your example code and discovered that finish()
will work from uncaughtException()
. It's silent however so doesn't give any feedback to the user and, like you, I was unable to invoke a Toast
or any other visual message box even using getApplicationContext()
.
The only way of sending any feedback that I was able to get working was to use NotificationManager
to send a status bar Notification
using getApplicationContext()
for the Context
.
I didn't spend much time on it but unfortunately it seems this does mean having to provide a PendingIntent
to handle when a user clicks on the notification itself. Doing this with the same Activity
could obviously risk an infinite loop if the Activity
set for the PendingIntent
is one which generates an unhandled exception.
It would be possible, however, to create a vary basic Activity
perhaps with a dialog theme that would be opened and explain the crash.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With