@@ -61,6 +61,7 @@ public class ActivityHandler extends HandlerThread {
6161 private String defaultTracker ;
6262 private boolean eventBuffering ;
6363 private boolean dropOfflineActivities ;
64+ private boolean enabled ;
6465
6566 private String appToken ;
6667 private String macSha1 ;
@@ -80,6 +81,7 @@ public ActivityHandler(Activity activity) {
8081 sessionHandler = new SessionHandler (getLooper (), this );
8182 context = activity .getApplicationContext ();
8283 clientSdk = Constants .CLIENT_SDK ;
84+ enabled = true ;
8385
8486 logger = AdjustFactory .getLogger ();
8587
@@ -99,6 +101,7 @@ public ActivityHandler(Activity activity, String appToken,
99101 sessionHandler = new SessionHandler (getLooper (), this );
100102 context = activity .getApplicationContext ();
101103 clientSdk = Constants .CLIENT_SDK ;
104+ enabled = true ;
102105
103106 logger = AdjustFactory .getLogger ();
104107
@@ -133,7 +136,7 @@ public void trackSubsessionEnd() {
133136 }
134137
135138 public void trackEvent (String eventToken , Map <String , String > parameters ) {
136- PackageBuilder builder = new PackageBuilder ();
139+ PackageBuilder builder = new PackageBuilder (context );
137140 builder .setEventToken (eventToken );
138141 builder .setCallbackParameters (parameters );
139142
@@ -144,7 +147,7 @@ public void trackEvent(String eventToken, Map<String, String> parameters) {
144147 }
145148
146149 public void trackRevenue (double amountInCents , String eventToken , Map <String , String > parameters ) {
147- PackageBuilder builder = new PackageBuilder ();
150+ PackageBuilder builder = new PackageBuilder (context );
148151 builder .setAmountInCents (amountInCents );
149152 builder .setEventToken (eventToken );
150153 builder .setCallbackParameters (parameters );
@@ -173,6 +176,25 @@ public void run() {
173176 handler .post (runnable );
174177 }
175178
179+ public void setEnabled (Boolean enabled ) {
180+ this .enabled = enabled ;
181+ if (checkActivityState (activityState ))
182+ activityState .enabled = enabled ;
183+ if (enabled ) {
184+ this .trackSubsessionStart ();
185+ } else {
186+ this .trackSubsessionEnd ();
187+ }
188+ }
189+
190+ public Boolean isEnabled () {
191+ if (checkActivityState (activityState )) {
192+ return activityState .enabled ;
193+ } else {
194+ return this .enabled ;
195+ }
196+ }
197+
176198 private static final class SessionHandler extends Handler {
177199 private static final int INIT_BUNDLE = 72630 ;
178200 private static final int INIT_PRESET = 72633 ;
@@ -260,6 +282,11 @@ private void startInternal() {
260282 return ;
261283 }
262284
285+ if (activityState != null
286+ && !activityState .enabled ) {
287+ return ;
288+ }
289+
263290 packageHandler .resumeSending ();
264291 startTimer ();
265292
@@ -273,6 +300,7 @@ private void startInternal() {
273300
274301 transferSessionPackage ();
275302 activityState .resetSessionAttributes (now );
303+ activityState .enabled = this .enabled ;
276304 writeActivityState ();
277305 logger .info ("First session" );
278306 return ;
@@ -321,7 +349,7 @@ private void endInternal() {
321349
322350 packageHandler .pauseSending ();
323351 stopTimer ();
324- updateActivityState ();
352+ updateActivityState (System . currentTimeMillis () );
325353 writeActivityState ();
326354 }
327355
@@ -330,9 +358,14 @@ private void trackEventInternal(PackageBuilder eventBuilder) {
330358 return ;
331359 }
332360
333- activityState .createdAt = System .currentTimeMillis ();
361+ if (!activityState .enabled ) {
362+ return ;
363+ }
364+
365+ long now = System .currentTimeMillis ();
366+ activityState .createdAt = now ;
334367 activityState .eventCount ++;
335- updateActivityState ();
368+ updateActivityState (now );
336369
337370 injectGeneralAttributes (eventBuilder );
338371 activityState .injectEventAttributes (eventBuilder );
@@ -354,9 +387,15 @@ private void trackRevenueInternal(PackageBuilder revenueBuilder) {
354387 return ;
355388 }
356389
357- activityState .createdAt = System .currentTimeMillis ();
390+ if (!activityState .enabled ) {
391+ return ;
392+ }
393+
394+ long now = System .currentTimeMillis ();
395+
396+ activityState .createdAt = now ;
358397 activityState .eventCount ++;
359- updateActivityState ();
398+ updateActivityState (now );
360399
361400 injectGeneralAttributes (revenueBuilder );
362401 activityState .injectEventAttributes (revenueBuilder );
@@ -385,12 +424,11 @@ && checkActivityState(activityState)
385424 && revenueBuilder .isValidForRevenue ();
386425 }
387426
388- private void updateActivityState () {
427+ private void updateActivityState (long now ) {
389428 if (!checkActivityState (activityState )) {
390429 return ;
391430 }
392431
393- long now = System .currentTimeMillis ();
394432 long lastInterval = now - activityState .lastActivity ;
395433 if (lastInterval < 0 ) {
396434 logger .error (TIME_TRAVEL );
@@ -465,7 +503,7 @@ public static Boolean deleteActivityState(Context context) {
465503 }
466504
467505 private void transferSessionPackage () {
468- PackageBuilder builder = new PackageBuilder ();
506+ PackageBuilder builder = new PackageBuilder (context );
469507 injectGeneralAttributes (builder );
470508 injectReferrer (builder );
471509 activityState .injectSessionAttributes (builder );
@@ -518,9 +556,14 @@ private void stopTimer() {
518556 }
519557
520558 private void timerFired () {
559+ if (null != activityState
560+ && !activityState .enabled ) {
561+ return ;
562+ }
563+
521564 packageHandler .sendFirstPackage ();
522565
523- updateActivityState ();
566+ updateActivityState (System . currentTimeMillis () );
524567 writeActivityState ();
525568 }
526569
0 commit comments