In my app, I'm creating a notification with the FLAG_ONGOING_EVENT flag set as such..
Notification notification = new Notification(iconId, text, System.currentTimeMillis());
notification.flags |= Notification.FLAG_ONGOING_EVENT;
I'm cancelling the notification in onDestroy, but if my app crashes before calling onDestroy, is there any way to have my notification go away?
Rob W.
Everything crashes, even Google applications. I use Thread.setUncaughtExceptionHandler()
and the following handler code:
package my.package;
import java.lang.Thread.UncaughtExceptionHandler;
import android.app.NotificationManager;
import android.content.Context;
public class CrashHandler implements UncaughtExceptionHandler
{
private static final int NOTIFICATION_ID = 12345;
private UncaughtExceptionHandler defaultUEH;
private NotificationManager notificationManager;
public CrashHandler(Context context)
{
this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
}
public void uncaughtException(Thread t, Throwable e)
{
if (notificationManager != null)
{
try
{
notificationManager.cancel(NOTIFICATION_ID);
}
catch (Throwable ex)
{
ex.printStackTrace();
}
}
notificationManager = null;
defaultUEH.uncaughtException(t, e);
}
}
This is more or less the same question as Callback before Force Close of Android Activity?, so I'll repeat my answer here:
I would recommend not having your app crash in the first place. If there's something that COULD crash, just put a try/catch around it and handle it properly.
Or, as some sort of global try/catch, you can use Thread.setUncaughtExceptionHandler()
. Finally, you could even consider Runtime.addShutdownHook, but that's most likely a bad idea.
Fix your crashes. That's the only sane solution.
No. When your app crashes, there's nothing that can be done after the crash! Either catch the exception and deal with it then (although catch Exception e {...}
is an extremely bad idea), or make your app not crash (this would be a good tactic in my opinion).
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