From 9211ca7f125dae1b928b864a5205016eedfcd190 Mon Sep 17 00:00:00 2001 From: Matthew Robertson Date: Mon, 7 Jul 2025 15:51:14 -0400 Subject: [PATCH 1/4] Final cleanup before merging --- .../kotlin/com/google/firebase/sessions/FirebaseSessions.kt | 2 +- .../firebase/sessions/SessionsActivityLifecycleCallbacks.kt | 2 ++ .../com/google/firebase/sessions/SharedSessionRepository.kt | 4 ++-- .../com/google/firebase/testing/sessions/FirstFragment.kt | 1 - 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessions.kt b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessions.kt index 59b6d9c201f..272de8d339c 100644 --- a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessions.kt +++ b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessions.kt @@ -42,7 +42,7 @@ constructor( ) { init { - Log.d(TAG, "Initializing Firebase Sessions SDK.") + Log.d(TAG, "Initializing Firebase Sessions ${BuildConfig.VERSION_NAME}.") val appContext = firebaseApp.applicationContext.applicationContext if (appContext is Application) { appContext.registerActivityLifecycleCallbacks(sessionsActivityLifecycleCallbacks) diff --git a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SessionsActivityLifecycleCallbacks.kt b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SessionsActivityLifecycleCallbacks.kt index 0cdfbd1a498..9d6f37b05e6 100644 --- a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SessionsActivityLifecycleCallbacks.kt +++ b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SessionsActivityLifecycleCallbacks.kt @@ -38,6 +38,8 @@ constructor(private val sharedSessionRepository: SharedSessionRepository) : } override fun onActivityResumed(activity: Activity) { + // There is a known issue in API level 34 where in some cases with a split screen, the call to + // onActivityResumed can happen before the call to onActivityPaused. This is fixed in API 35+ if (enabled) { sharedSessionRepository.appForeground() } diff --git a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt index 2c33c173d95..ed5ae5b5eb2 100644 --- a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt +++ b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt @@ -106,7 +106,7 @@ constructor( return } val sessionData = localSessionData - Log.d(TAG, "App backgrounded on ${processDataManager.myProcessName} - $sessionData") + Log.d(TAG, "App backgrounded on ${processDataManager.myProcessName}") CoroutineScope(backgroundDispatcher).launch { try { @@ -127,7 +127,7 @@ constructor( return } val sessionData = localSessionData - Log.d(TAG, "App foregrounded on ${processDataManager.myProcessName} - $sessionData") + Log.d(TAG, "App foregrounded on ${processDataManager.myProcessName}") // Check if maybe the session data needs to be updated if (isSessionExpired(sessionData) || isMyProcessStale(sessionData)) { diff --git a/firebase-sessions/test-app/src/main/kotlin/com/google/firebase/testing/sessions/FirstFragment.kt b/firebase-sessions/test-app/src/main/kotlin/com/google/firebase/testing/sessions/FirstFragment.kt index ebe54414661..f5502b86db9 100644 --- a/firebase-sessions/test-app/src/main/kotlin/com/google/firebase/testing/sessions/FirstFragment.kt +++ b/firebase-sessions/test-app/src/main/kotlin/com/google/firebase/testing/sessions/FirstFragment.kt @@ -117,7 +117,6 @@ class FirstFragment : Fragment() { val intent = Intent(requireContext(), SecondActivity::class.java) intent.addFlags(FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_LAUNCH_ADJACENT) startActivity(intent) - activity?.finish() } binding.startSplitscreenSame.setOnClickListener { val intent = Intent(requireContext(), MainActivity::class.java) From 54fc98af82e4fe7c5adb9411ed136cce667928fe Mon Sep 17 00:00:00 2001 From: Matthew Robertson Date: Mon, 7 Jul 2025 16:01:37 -0400 Subject: [PATCH 2/4] Address feedback --- .../com/google/firebase/sessions/SharedSessionRepository.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt index ed5ae5b5eb2..ec60e9c1994 100644 --- a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt +++ b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt @@ -105,12 +105,11 @@ constructor( Log.d(TAG, "App backgrounded, but local SessionData not initialized") return } - val sessionData = localSessionData Log.d(TAG, "App backgrounded on ${processDataManager.myProcessName}") CoroutineScope(backgroundDispatcher).launch { try { - sessionDataStore.updateData { + sessionDataStore.updateData {sessionData -> sessionData.copy(backgroundTime = timeProvider.currentTime()) } } catch (ex: Exception) { From 3ae4c4f2cf79f691d4db2ceb108d3c662b87cc6a Mon Sep 17 00:00:00 2001 From: Matthew Robertson Date: Mon, 7 Jul 2025 16:23:15 -0400 Subject: [PATCH 3/4] Format --- .../com/google/firebase/sessions/SharedSessionRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt index ec60e9c1994..7534ba8b1e8 100644 --- a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt +++ b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SharedSessionRepository.kt @@ -109,7 +109,7 @@ constructor( CoroutineScope(backgroundDispatcher).launch { try { - sessionDataStore.updateData {sessionData -> + sessionDataStore.updateData { sessionData -> sessionData.copy(backgroundTime = timeProvider.currentTime()) } } catch (ex: Exception) { From d33b8578df184b19f7b5cdbd652f9e706e38c913 Mon Sep 17 00:00:00 2001 From: Matthew Robertson Date: Tue, 8 Jul 2025 08:16:55 -0400 Subject: [PATCH 4/4] Feedback --- .../kotlin/com/google/firebase/testing/sessions/FirstFragment.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase-sessions/test-app/src/main/kotlin/com/google/firebase/testing/sessions/FirstFragment.kt b/firebase-sessions/test-app/src/main/kotlin/com/google/firebase/testing/sessions/FirstFragment.kt index f5502b86db9..ebe54414661 100644 --- a/firebase-sessions/test-app/src/main/kotlin/com/google/firebase/testing/sessions/FirstFragment.kt +++ b/firebase-sessions/test-app/src/main/kotlin/com/google/firebase/testing/sessions/FirstFragment.kt @@ -117,6 +117,7 @@ class FirstFragment : Fragment() { val intent = Intent(requireContext(), SecondActivity::class.java) intent.addFlags(FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_LAUNCH_ADJACENT) startActivity(intent) + activity?.finish() } binding.startSplitscreenSame.setOnClickListener { val intent = Intent(requireContext(), MainActivity::class.java)