3 changed files with 29 additions and 36 deletions
-
3app/src/main/java/awais/instagrabber/InstaGrabberApplication.kt
-
2app/src/main/java/awais/instagrabber/utils/UpdateCheckCommon.kt
-
60app/src/main/java/awaisomereport/CrashReporter.kt
@ -1,46 +1,40 @@ |
|||
package awaisomereport; |
|||
package awaisomereport |
|||
|
|||
import android.app.Application; |
|||
import android.app.Application |
|||
|
|||
import androidx.annotation.NonNull; |
|||
class CrashReporter private constructor(application: Application) : Thread.UncaughtExceptionHandler { |
|||
|
|||
public final class CrashReporter implements Thread.UncaughtExceptionHandler { |
|||
private static final String TAG = CrashReporter.class.getSimpleName(); |
|||
private val crashHandler: CrashHandler? |
|||
private var startAttempted = false |
|||
private var defaultExceptionHandler: Thread.UncaughtExceptionHandler? = null |
|||
|
|||
private static CrashReporter reporterInstance; |
|||
|
|||
// private final File crashLogsZip; |
|||
private final CrashHandler crashHandler; |
|||
|
|||
private boolean startAttempted = false; |
|||
private Thread.UncaughtExceptionHandler defaultEH; |
|||
|
|||
public static CrashReporter get(final Application application) { |
|||
if (reporterInstance == null) { |
|||
reporterInstance = new CrashReporter(application); |
|||
} |
|||
return reporterInstance; |
|||
init { |
|||
crashHandler = CrashHandler(application) |
|||
} |
|||
|
|||
private CrashReporter(@NonNull final Application application) { |
|||
crashHandler = new CrashHandler(application); |
|||
// this.crashLogsZip = new File(application.getExternalCacheDir(), "crash_logs.zip"); |
|||
fun start() { |
|||
if (startAttempted) return |
|||
defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler() |
|||
Thread.setDefaultUncaughtExceptionHandler(this) |
|||
startAttempted = true |
|||
} |
|||
|
|||
public void start() { |
|||
if (!startAttempted) { |
|||
defaultEH = Thread.getDefaultUncaughtExceptionHandler(); |
|||
Thread.setDefaultUncaughtExceptionHandler(this); |
|||
startAttempted = true; |
|||
override fun uncaughtException(t: Thread, exception: Throwable) { |
|||
if (crashHandler == null) { |
|||
defaultExceptionHandler?.uncaughtException(t, exception) |
|||
return |
|||
} |
|||
crashHandler.uncaughtException(t, exception, defaultExceptionHandler ?: return) |
|||
} |
|||
|
|||
@Override |
|||
public void uncaughtException(@NonNull final Thread t, @NonNull final Throwable exception) { |
|||
if (crashHandler == null) { |
|||
defaultEH.uncaughtException(t, exception); |
|||
return; |
|||
companion object { |
|||
@Volatile |
|||
private var INSTANCE: CrashReporter? = null |
|||
|
|||
fun getInstance(application: Application): CrashReporter { |
|||
return INSTANCE ?: synchronized(this) { |
|||
CrashReporter(application).also { INSTANCE = it } |
|||
} |
|||
} |
|||
crashHandler.uncaughtException(t, exception, defaultEH); |
|||
} |
|||
} |
|||
} |
Reference in new issue
xxxxxxxxxx