diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/EmbeddedImpressionData.kt b/iterableapi/src/main/java/com/iterable/iterableapi/EmbeddedImpressionData.kt index e166fa2e9..a8947c052 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/EmbeddedImpressionData.kt +++ b/iterableapi/src/main/java/com/iterable/iterableapi/EmbeddedImpressionData.kt @@ -9,7 +9,7 @@ data class EmbeddedImpressionData( val placementId: Long, var displayCount: Int = 0, var duration: Float = 0.0f, - var start: Date? = null + @Volatile var start: Date? = null ) { constructor( messageId: String, diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/EmbeddedSessionManager.kt b/iterableapi/src/main/java/com/iterable/iterableapi/EmbeddedSessionManager.kt index cbedfe4fd..b1271111c 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/EmbeddedSessionManager.kt +++ b/iterableapi/src/main/java/com/iterable/iterableapi/EmbeddedSessionManager.kt @@ -108,12 +108,15 @@ public class EmbeddedSessionManager { } private fun updateDisplayCountAndDuration(impressionData: EmbeddedImpressionData): EmbeddedImpressionData { - if (impressionData.start != null) { - impressionData.displayCount = impressionData.displayCount.plus(1) - impressionData.duration = - impressionData.duration.plus((Date().time - impressionData.start!!.time) / 1000.0) - .toFloat() - impressionData.start = null + synchronized(impressionData) { + val start = impressionData.start + if (start != null) { + impressionData.displayCount = impressionData.displayCount.plus(1) + impressionData.duration = + impressionData.duration.plus((Date().time - start.time) / 1000.0) + .toFloat() + impressionData.start = null + } } return impressionData }