1*d44a6d96SWill Schurman // Copyright 2015-present 650 Industries. All rights reserved. 2*d44a6d96SWill Schurman package host.exp.exponent 3*d44a6d96SWill Schurman 4*d44a6d96SWill Schurman import android.content.Context 5*d44a6d96SWill Schurman import host.exp.exponent.analytics.EXL 6*d44a6d96SWill Schurman import host.exp.exponent.experience.ExperienceActivity 7*d44a6d96SWill Schurman 8*d44a6d96SWill Schurman class ExponentUncaughtExceptionHandler(private val context: Context) : Thread.UncaughtExceptionHandler { 9*d44a6d96SWill Schurman private val oldExceptionHandler = Thread.getDefaultUncaughtExceptionHandler() 10*d44a6d96SWill Schurman uncaughtExceptionnull11*d44a6d96SWill Schurman override fun uncaughtException(thread: Thread, ex: Throwable) { 12*d44a6d96SWill Schurman try { 13*d44a6d96SWill Schurman ExperienceActivity.removeNotification(context) 14*d44a6d96SWill Schurman } catch (e: Throwable) { 15*d44a6d96SWill Schurman // Don't ever want to crash before getting to default exception handler 16*d44a6d96SWill Schurman EXL.e(TAG, e) 17*d44a6d96SWill Schurman } 18*d44a6d96SWill Schurman oldExceptionHandler.uncaughtException(thread, ex) 19*d44a6d96SWill Schurman 20*d44a6d96SWill Schurman // TODO: open up home screen with error screen preloaded. 21*d44a6d96SWill Schurman // KernelProvider.getInstance().handleError doesn't always work because sometimes the process gets corrupted. 22*d44a6d96SWill Schurman System.exit(1) 23*d44a6d96SWill Schurman } 24*d44a6d96SWill Schurman 25*d44a6d96SWill Schurman companion object { 26*d44a6d96SWill Schurman private val TAG = ExponentUncaughtExceptionHandler::class.java.simpleName 27*d44a6d96SWill Schurman } 28*d44a6d96SWill Schurman } 29