Skip to content

Commit 083c493

Browse files
committed
Merge branch 'master' into release/7.1.2
2 parents ab70d11 + 4359ff2 commit 083c493

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

AndroidSDKCore/src/main/java/com/leanplum/ActionContext.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import androidx.annotation.NonNull;
2525
import android.text.TextUtils;
2626

27+
import com.leanplum.actions.LeanplumActions;
2728
import com.leanplum.actions.internal.ActionDidExecute;
2829
import com.leanplum.actions.internal.ActionManagerDefinitionKt;
2930
import com.leanplum.actions.internal.ActionManagerTriggeringKt;
@@ -37,6 +38,7 @@
3738
import com.leanplum.internal.JsonConverter;
3839
import com.leanplum.internal.LeanplumInternal;
3940
import com.leanplum.internal.Log;
41+
import com.leanplum.internal.OperationQueue;
4042
import com.leanplum.internal.VarCache;
4143

4244
import org.json.JSONException;
@@ -386,7 +388,15 @@ private void performChainedAction(String name, Map<String, Object> args) {
386388
if (success) {
387389
executeChainedMessage(chainedMessageId, name);
388390
}
389-
ActionManager.getInstance().setPaused(previousPauseState); // will resume queue
391+
if (LeanplumActions.getUseWorkerThreadForDecisionHandlers()) {
392+
OperationQueue.sharedInstance().addActionOperation(() -> {
393+
OperationQueue.sharedInstance().addUiOperation(() -> {
394+
ActionManager.getInstance().setPaused(previousPauseState); // will resume queue
395+
});
396+
});
397+
} else {
398+
ActionManager.getInstance().setPaused(previousPauseState); // will resume queue
399+
}
390400
});
391401
} else {
392402
executeChainedMessage(chainedMessageId, name);

AndroidSDKCore/src/main/java/com/leanplum/actions/internal/ActionManagerTriggering.kt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,23 @@ private fun ActionManager.triggerImpl(
6464

6565
// By default, add only one message to queue if `prioritizeMessages` is not implemented
6666
// This ensures backwards compatibility
67+
Log.d("[ActionManager][${Util.getThread()}]: will call prioritizeMessages if controller is available")
6768
val orderedContexts =
6869
messageDisplayController?.prioritizeMessages(contexts, trigger) ?: listOf(contexts.first())
6970

7071
val actions: List<Action> = orderedContexts.map { context -> Action.create(context) }
7172

72-
Log.d("[ActionManager][${Util.getThread()}]: triggering with priority: ${priority.name} and actions: $orderedContexts")
73-
74-
when (priority) {
75-
Priority.HIGH -> insertActions(actions)
76-
Priority.DEFAULT -> appendActions(actions)
73+
val triggerOperation = {
74+
Log.d("[ActionManager][${Util.getThread()}]: triggering with priority: ${priority.name} and actions: $orderedContexts")
75+
when (priority) {
76+
Priority.HIGH -> insertActions(actions)
77+
Priority.DEFAULT -> appendActions(actions)
78+
}
79+
}
80+
if (LeanplumActions.useWorkerThreadForDecisionHandlers) {
81+
OperationQueue.sharedInstance().addUiOperation(triggerOperation) // synchronizing push and pop with UI thread
82+
} else {
83+
triggerOperation.invoke()
7784
}
7885
}
7986

0 commit comments

Comments
 (0)