Question
Do you have recommendation for best way to resolve this?
Issue observations/summary:
- Datadog SDK is listening to lifecycle methods
- When the app starts up (whether in foreground or background), our app also initializes the WorkManager and its configuration in the onCreate of our Application.
- Since we have a custom WorkerFactory (SingletonWorkerFactory) that gets initialized at the same time, it takes precedent (somehow) over the config of the DD WorkerFactory
- Thus, our WorkerFactory is used to initialize the DD UploadWorker, which it can't because its internal.
- initialization order in Application onCreate does not matter, same result.
How we initialize WorkManager in application:
@Inject lateinit var workManagerConfiguration: androidx.work.Configuration WorkManager.initialize(this, workManagerConfiguration) DatadogInitializer.initialize(this)
currently using:
- datadog plugin version '1.14.0'
- datadog version '2.17.0'
here is our code for datadog initialization:
`
import com.datadog.android.core.configuration.Configuration as DatadogConfig
object DatadogInitializer {
val logger = Logger.Builder()
.setNetworkInfoEnabled(true)
.setService("com..android")
.setLogcatLogsEnabled(true)
.setRemoteSampleRate(100f)
.setName("Mobile Android")
.build()
fun initialize(context: Context) {
val ddToken = context.getString(R.string.datadog_client_token)
val datadogEnv = AppController.getInstance().environmentSettingsProvider.dataDogEnvironmentName(
AppController.getInstance().environmentSettingsProvider.serverRegion
)
val config = DatadogConfig.Builder(
clientToken = ddToken,
env = datadogEnv,
).build()
Datadog.initialize(context, config, TrackingConsent.GRANTED)
val applicationId = context.getString(R.string.datadog_application_id)
val rumConfiguration = RumConfiguration.Builder(applicationId)
.trackUserInteractions()
.build()
Rum.enable(rumConfiguration)
logger.i("Datadog initialized: $datadogEnv")
}
// used prior to changing environments re-initialization does not work for updating environment
fun stopDatadog() {
Datadog.stopInstance()
logger.i("Datadog instance stopped")
}
}
`
Question
Do you have recommendation for best way to resolve this?
Issue observations/summary:
How we initialize WorkManager in application:
@Inject lateinit var workManagerConfiguration: androidx.work.Configuration WorkManager.initialize(this, workManagerConfiguration) DatadogInitializer.initialize(this)currently using:
here is our code for datadog initialization:
`
import com.datadog.android.core.configuration.Configuration as DatadogConfig
object DatadogInitializer {
val logger = Logger.Builder()
.setNetworkInfoEnabled(true)
.setService("com..android")
.setLogcatLogsEnabled(true)
.setRemoteSampleRate(100f)
.setName("Mobile Android")
.build()
}
`