Skip to content

Commit 68f1480

Browse files
Fix buggy activity count logic (#1270)
1 parent cae5a54 commit 68f1480

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

Branch-SDK/src/main/java/io/branch/referral/BranchActivityLifecycleObserver.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void onActivityStarted(@NonNull Activity activity) {
5151
@Override
5252
public void onActivityResumed(@NonNull Activity activity) {
5353
Branch branch = Branch.getInstance();
54-
BranchLogger.v("onActivityResumed, activity = " + activity + " branch: " + branch + " Activities on stack: " + activitiesOnStack_);
54+
BranchLogger.v("onActivityResumed, activity = " + activity + " branch: " + branch);
5555
if (branch == null) return;
5656

5757
// if the intent state is bypassed from the last activity as it was closed before onResume, we need to skip this with the current
@@ -76,18 +76,22 @@ public void onActivityResumed(@NonNull Activity activity) {
7676
// must be called after session initialization, which relies on checking whether activity
7777
// that is initializing the session is being launched from stack or anew
7878
activitiesOnStack_.add(activity.toString());
79+
BranchLogger.v("activityCnt_: " + activityCnt_);
80+
BranchLogger.v("activitiesOnStack_: " + activitiesOnStack_);
7981
}
8082

8183
@Override
8284
public void onActivityPaused(@NonNull Activity activity) {
8385
Branch branch = Branch.getInstance();
84-
BranchLogger.v("onActivityPaused, activity = " + activity + " branch: " + branch + " Activities on stack: " + activitiesOnStack_);
86+
BranchLogger.v("onActivityPaused, activity = " + activity + " branch: " + branch);
8587
if (branch == null) return;
8688

8789
/* Close any opened sharing dialog.*/
8890
if (branch.getShareLinkManager() != null) {
8991
branch.getShareLinkManager().cancelShareLinkDialog(true);
9092
}
93+
BranchLogger.v("activityCnt_: " + activityCnt_);
94+
BranchLogger.v("activitiesOnStack_: " + activitiesOnStack_);
9195
}
9296

9397
@Override
@@ -101,7 +105,17 @@ public void onActivityStopped(@NonNull Activity activity) {
101105
if (activityCnt_ < 1) {
102106
branch.setInstantDeepLinkPossible(false);
103107
branch.closeSessionInternal();
108+
109+
/* It is possible some integrations do not call Branch.getAutoInstance() before the first
110+
activity's lifecycle methods execute.
111+
In such cases, activityCnt_ could be set to -1, which could cause the above line to clear
112+
session parameters. Just reset to 0 if we're here.
113+
*/
114+
activityCnt_ = 0;
115+
BranchLogger.v("activityCnt_: reset to 0");
104116
}
117+
118+
BranchLogger.v("activitiesOnStack_: " + activitiesOnStack_);
105119
}
106120

107121
@Override
@@ -111,14 +125,15 @@ public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bun
111125
@Override
112126
public void onActivityDestroyed(@NonNull Activity activity) {
113127
Branch branch = Branch.getInstance();
114-
BranchLogger.v("onActivityDestroyed, activity = " + activity + " branch: " + branch + " Activities on stack: " + activitiesOnStack_);
128+
BranchLogger.v("onActivityDestroyed, activity = " + activity + " branch: " + branch);
115129
if (branch == null) return;
116130

117131
if (branch.getCurrentActivity() == activity) {
118132
branch.currentActivityReference_.clear();
119133
}
120134

121135
activitiesOnStack_.remove(activity.toString());
136+
BranchLogger.v("activitiesOnStack_: " + activitiesOnStack_);
122137
}
123138

124139
boolean isCurrentActivityLaunchedFromStack() {

0 commit comments

Comments
 (0)