Skip to content

Commit 771c2eb

Browse files
moved Branch.getAutoInstance() to background thread and set await before initializeBranch
1 parent b344845 commit 771c2eb

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

app/src/main/java/io/branch/branchlinksimulator/BranchLinkSimulatorApplication.kt

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,26 @@ package io.branch.branchlinksimulator
22

33
import android.app.Application
44
import android.content.Context
5+
import android.util.Log
56
import io.branch.referral.Branch
7+
import kotlinx.coroutines.CompletableDeferred
68
import java.util.UUID
79

10+
import kotlinx.coroutines.CoroutineScope
11+
import kotlinx.coroutines.Dispatchers
12+
import kotlinx.coroutines.SupervisorJob
13+
import kotlinx.coroutines.launch
14+
import kotlinx.coroutines.withContext
15+
816
class BranchLinkSimulatorApplication: Application() {
917
lateinit var currentConfig: ApiConfiguration
1018
lateinit var roundTripStore: RoundTripStore
1119
private set
1220

21+
private val applicationJob = SupervisorJob()
22+
val applicationScope = CoroutineScope(Dispatchers.Main + applicationJob)
23+
val branchInitializationSignal = CompletableDeferred<Unit>()
24+
1325
override fun onCreate() {
1426
super.onCreate()
1527

@@ -21,7 +33,7 @@ class BranchLinkSimulatorApplication: Application() {
2133
roundTripStore = RoundTripStore(this)
2234
Branch.enableLogging(roundTripStore)
2335
// Branch object initialization
24-
Branch.getAutoInstance(this, currentConfig.branchKey)
36+
// Branch.getAutoInstance(this, currentConfig.branchKey)
2537

2638
// Retrieve or create the bls_session_id
2739
val sharedPreferences = getSharedPreferences("branch_session_prefs", Context.MODE_PRIVATE)
@@ -30,8 +42,28 @@ class BranchLinkSimulatorApplication: Application() {
3042
sharedPreferences.edit().putString("bls_session_id", newId).apply()
3143
newId
3244
}
45+
Log.d("AppScopeTest", "Application Fired launching coroutine")
46+
applicationScope.launch {
47+
Log.e("AppScopeTest", "Coroutine Successfully fired")
48+
setupBranchInstance(this@BranchLinkSimulatorApplication, currentConfig.branchKey)
49+
50+
withContext(Dispatchers.Main) {
3351

34-
// Set the bls_session_id in Branch request metadata
35-
Branch.getInstance().setRequestMetadata("bls_session_id", blsSessionId)
52+
// Set the bls_session_id in Branch request metadata
53+
Branch.getInstance().setRequestMetadata("bls_session_id", blsSessionId)
54+
}
55+
}
56+
}
57+
58+
override fun onTerminate() {
59+
super.onTerminate()
60+
applicationJob.cancel()
61+
}
62+
63+
suspend fun setupBranchInstance(context: Context, branchKey: String) {
64+
withContext(Dispatchers.IO) {
65+
Branch.getAutoInstance(context, branchKey)
66+
}
67+
branchInitializationSignal.complete(Unit)
3668
}
3769
}

app/src/main/java/io/branch/branchlinksimulator/MainActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ class MainActivity : ComponentActivity() {
120120
}
121121

122122
lifecycleScope.launch {
123+
val app = application as BranchLinkSimulatorApplication
124+
app.branchInitializationSignal.await()
123125
val initErrorMessage = initializeBranch()
124126
initErrorMessageState.value = initErrorMessage
125127
}

0 commit comments

Comments
 (0)