-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFeatureFlagsInitializer.kt
More file actions
34 lines (30 loc) · 1.3 KB
/
FeatureFlagsInitializer.kt
File metadata and controls
34 lines (30 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.aquib.androidperflab.startup
import android.content.Context
import android.util.Log
import androidx.startup.Initializer
import com.aquib.androidperflab.AndroidPerfLabApplication
import com.aquib.androidperflab.sdk.FakeFeatureFlagsSdk
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
/**
* Lazy initializer for the Feature Flags SDK.
*
* NOT registered in AndroidManifest.xml. Application.onCreate() defers triggering
* this initializer by 500 ms so it never competes with first-frame rendering or the
* immediately-needed Analytics / PerfMonitor SDKs.
*
* FakeFeatureFlagsSdk.isEnabled() returns false (the default) for any flag until the
* background coroutine completes — the UI is never gated on this SDK being ready.
*/
class FeatureFlagsInitializer : Initializer<Unit> {
override fun create(context: Context) {
val app = context.applicationContext as AndroidPerfLabApplication
app.applicationScope.launch(Dispatchers.IO) {
FakeFeatureFlagsSdk.init(context.applicationContext)
Log.d("AppStartup", "FeatureFlags ready")
}
Log.d("AppStartup", "FeatureFlagsInitializer.create() returned")
}
override fun dependencies(): List<Class<out Initializer<*>>> =
listOf(CrashReportingInitializer::class.java)
}