@@ -442,6 +442,22 @@ static OSSharedPreferences getSharedPreferences() {
442
442
@ Nullable private static OSOutcomeEventsController outcomeEventsController ;
443
443
@ Nullable private static OSOutcomeEventsFactory outcomeEventsFactory ;
444
444
@ Nullable private static OSNotificationDataController notificationDataController ;
445
+ private static final Object outcomeEventsControllerSyncLock = new Object () {};
446
+
447
+ static OSOutcomeEventsController getOutcomeEventsController () {
448
+ if (outcomeEventsController == null ) {
449
+ synchronized (outcomeEventsControllerSyncLock ) {
450
+ if (outcomeEventsController == null ) {
451
+ if (outcomeEventsFactory == null ) {
452
+ OneSignalDbHelper dbHelper = getDBHelperInstance ();
453
+ outcomeEventsFactory = new OSOutcomeEventsFactory (logger , apiClient , dbHelper , preferences );
454
+ }
455
+ outcomeEventsController = new OSOutcomeEventsController (sessionManager , outcomeEventsFactory );
456
+ }
457
+ }
458
+ }
459
+ return outcomeEventsController ;
460
+ }
445
461
446
462
@ SuppressWarnings ("WeakerAccess" )
447
463
public static String sdkType = "native" ;
@@ -834,7 +850,7 @@ synchronized private static void init(Context context) {
834
850
initDone = true ;
835
851
OneSignal .Log (LOG_LEVEL .VERBOSE , "OneSignal SDK initialization done." );
836
852
837
- outcomeEventsController .sendSavedOutcomes ();
853
+ getOutcomeEventsController () .sendSavedOutcomes ();
838
854
839
855
// Clean up any pending tasks that were queued up before initialization
840
856
taskRemoteController .startPendingTasks ();
@@ -871,8 +887,7 @@ private static void setupContextListeners(boolean wasAppContextNull) {
871
887
outcomeEventsFactory = new OSOutcomeEventsFactory (logger , apiClient , dbHelper , preferences );
872
888
873
889
sessionManager .initSessionFromCache ();
874
- outcomeEventsController = new OSOutcomeEventsController (sessionManager , outcomeEventsFactory );
875
- outcomeEventsController .cleanCachedUniqueOutcomes ();
890
+ getOutcomeEventsController ().cleanCachedUniqueOutcomes ();
876
891
}
877
892
}
878
893
@@ -950,7 +965,7 @@ private static void doSessionInit() {
950
965
logger .debug ("Starting new session with appEntryState: " + getAppEntryState ());
951
966
952
967
OneSignalStateSynchronizer .setNewSession ();
953
- outcomeEventsController .cleanOutcomes ();
968
+ getOutcomeEventsController () .cleanOutcomes ();
954
969
sessionManager .restartSessionIfNeeded (getAppEntryState ());
955
970
getInAppMessageController ().resetSessionLaunchTime ();
956
971
setLastSessionTime (time .getCurrentTimeMillis ());
0 commit comments