Skip to content

Commit f7ab8a0

Browse files
committed
fix: start crash handler sooner
We need to start it sooner to catch crashes in things like other IStartableService's.
1 parent fc0d830 commit f7ab8a0

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/CoreModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ internal class CoreModule : IModule {
102102
builder.register<OneSignalOpenTelemetryCrashLocal>().provides<IOneSignalOpenTelemetryCrash>()
103103
builder.register<OneSignalCrashConfigProvider>().provides<IOneSignalCrashConfigProvider>()
104104

105-
builder.register<OneSignalCrashHandler>().provides<IStartableService>()
105+
builder.register<OneSignalCrashHandler>().provides<OneSignalCrashHandler>()
106106
builder.register<OneSignalCrashUploader>().provides<IStartableService>()
107107

108108
builder.register<OneSignalOtelFieldsTopLevel>().provides<OneSignalOtelFieldsTopLevel>()

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/debug/internal/crash/OneSignalCrashHandler.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.onesignal.debug.internal.crash
22

3-
import com.onesignal.core.internal.startup.IStartableService
43
import kotlinx.coroutines.runBlocking
54

65
/**
@@ -10,12 +9,11 @@ import kotlinx.coroutines.runBlocking
109
*/
1110
internal class OneSignalCrashHandler(
1211
private val _crashReporter: IOneSignalCrashReporter,
13-
) : IStartableService,
14-
Thread.UncaughtExceptionHandler {
12+
) : Thread.UncaughtExceptionHandler {
1513
private var existingHandler: Thread.UncaughtExceptionHandler? = null
1614
private val seenThrowables: MutableList<Throwable> = mutableListOf()
1715

18-
override fun start() {
16+
init {
1917
existingHandler = Thread.getDefaultUncaughtExceptionHandler()
2018
Thread.setDefaultUncaughtExceptionHandler(this)
2119
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/internal/OneSignalImp.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.onesignal.core.internal.startup.StartupService
2323
import com.onesignal.debug.IDebugManager
2424
import com.onesignal.debug.LogLevel
2525
import com.onesignal.debug.internal.DebugManager
26+
import com.onesignal.debug.internal.crash.OneSignalCrashHandler
2627
import com.onesignal.debug.internal.logging.Logging
2728
import com.onesignal.inAppMessages.IInAppMessagesManager
2829
import com.onesignal.location.ILocationManager
@@ -214,6 +215,11 @@ internal class OneSignalImp(
214215

215216
// Give the logging singleton access to the application service to support visual logging.
216217
Logging.applicationService = applicationService
218+
219+
// Crash handler needs to be one of the first things we setup,
220+
// otherwise we'll not report some crashes, resulting in a false sense
221+
// of stability.
222+
services.getService<OneSignalCrashHandler>()
217223
}
218224

219225
private fun updateConfig() {

0 commit comments

Comments
 (0)