Files
rr3-apk/decompiled/sources/com/facebook/appevents/internal/ActivityLifecycleTracker.java
Daniel Elliott f9d20bb3fc Add decompiled APK source code (JADX)
- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-18 14:52:23 -08:00

373 lines
18 KiB
Java

package com.facebook.appevents.internal;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.RestrictTo;
import com.facebook.FacebookSdk;
import com.facebook.LoggingBehavior;
import com.facebook.appevents.AppEventsLogger;
import com.facebook.appevents.aam.MetadataIndexer;
import com.facebook.appevents.codeless.CodelessManager;
import com.facebook.appevents.iap.InAppPurchaseManager;
import com.facebook.appevents.suggestedevents.SuggestedEventsManager;
import com.facebook.internal.FeatureManager;
import com.facebook.internal.FetchedAppSettings;
import com.facebook.internal.FetchedAppSettingsManager;
import com.facebook.internal.Logger;
import com.facebook.internal.Utility;
import java.lang.ref.WeakReference;
import java.util.UUID;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import kotlin.Unit;
import kotlin.jvm.internal.Intrinsics;
/* loaded from: classes2.dex */
public final class ActivityLifecycleTracker {
private static final String INCORRECT_IMPL_WARNING = "Unexpected activity pause without a matching activity resume. Logging data may be incorrect. Make sure you call activateApp from your Application's onCreate method";
public static final ActivityLifecycleTracker INSTANCE = new ActivityLifecycleTracker();
private static final long INTERRUPTION_THRESHOLD_MILLISECONDS = 1000;
private static final String TAG;
private static int activityReferences;
private static String appId;
private static WeakReference<Activity> currActivity;
private static long currentActivityAppearTime;
private static volatile ScheduledFuture<?> currentFuture;
private static final Object currentFutureLock;
private static volatile SessionInfo currentSession;
private static final AtomicInteger foregroundActivityCount;
private static final ScheduledExecutorService singleThreadExecutor;
private static final AtomicBoolean tracking;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public static final boolean isInBackground() {
return activityReferences == 0;
}
private ActivityLifecycleTracker() {
}
static {
String canonicalName = ActivityLifecycleTracker.class.getCanonicalName();
if (canonicalName == null) {
canonicalName = "com.facebook.appevents.internal.ActivityLifecycleTracker";
}
TAG = canonicalName;
singleThreadExecutor = Executors.newSingleThreadScheduledExecutor();
currentFutureLock = new Object();
foregroundActivityCount = new AtomicInteger(0);
tracking = new AtomicBoolean(false);
}
public static final void startTracking(Application application, String str) {
Intrinsics.checkNotNullParameter(application, "application");
if (tracking.compareAndSet(false, true)) {
FeatureManager featureManager = FeatureManager.INSTANCE;
FeatureManager.checkFeature(FeatureManager.Feature.CodelessEvents, new FeatureManager.Callback() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda3
@Override // com.facebook.internal.FeatureManager.Callback
public final void onCompleted(boolean z) {
ActivityLifecycleTracker.m511startTracking$lambda0(z);
}
});
appId = str;
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$startTracking$2
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityCreated(Activity activity, Bundle bundle) {
String str2;
Intrinsics.checkNotNullParameter(activity, "activity");
Logger.Companion companion = Logger.Companion;
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
str2 = ActivityLifecycleTracker.TAG;
companion.log(loggingBehavior, str2, "onActivityCreated");
AppEventUtility.assertIsMainThread();
ActivityLifecycleTracker.onActivityCreated(activity);
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityStarted(Activity activity) {
int i;
String str2;
Intrinsics.checkNotNullParameter(activity, "activity");
i = ActivityLifecycleTracker.activityReferences;
ActivityLifecycleTracker.activityReferences = i + 1;
Logger.Companion companion = Logger.Companion;
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
str2 = ActivityLifecycleTracker.TAG;
companion.log(loggingBehavior, str2, "onActivityStarted");
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityResumed(Activity activity) {
String str2;
Intrinsics.checkNotNullParameter(activity, "activity");
Logger.Companion companion = Logger.Companion;
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
str2 = ActivityLifecycleTracker.TAG;
companion.log(loggingBehavior, str2, "onActivityResumed");
AppEventUtility.assertIsMainThread();
ActivityLifecycleTracker.onActivityResumed(activity);
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityPaused(Activity activity) {
String str2;
Intrinsics.checkNotNullParameter(activity, "activity");
Logger.Companion companion = Logger.Companion;
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
str2 = ActivityLifecycleTracker.TAG;
companion.log(loggingBehavior, str2, "onActivityPaused");
AppEventUtility.assertIsMainThread();
ActivityLifecycleTracker.INSTANCE.onActivityPaused(activity);
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityStopped(Activity activity) {
String str2;
int i;
Intrinsics.checkNotNullParameter(activity, "activity");
Logger.Companion companion = Logger.Companion;
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
str2 = ActivityLifecycleTracker.TAG;
companion.log(loggingBehavior, str2, "onActivityStopped");
AppEventsLogger.Companion.onContextStop();
i = ActivityLifecycleTracker.activityReferences;
ActivityLifecycleTracker.activityReferences = i - 1;
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
String str2;
Intrinsics.checkNotNullParameter(activity, "activity");
Intrinsics.checkNotNullParameter(outState, "outState");
Logger.Companion companion = Logger.Companion;
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
str2 = ActivityLifecycleTracker.TAG;
companion.log(loggingBehavior, str2, "onActivitySaveInstanceState");
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityDestroyed(Activity activity) {
String str2;
Intrinsics.checkNotNullParameter(activity, "activity");
Logger.Companion companion = Logger.Companion;
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
str2 = ActivityLifecycleTracker.TAG;
companion.log(loggingBehavior, str2, "onActivityDestroyed");
ActivityLifecycleTracker.INSTANCE.onActivityDestroyed(activity);
}
});
}
}
/* JADX INFO: Access modifiers changed from: private */
/* renamed from: startTracking$lambda-0, reason: not valid java name */
public static final void m511startTracking$lambda0(boolean z) {
if (z) {
CodelessManager.enable();
} else {
CodelessManager.disable();
}
}
public static final boolean isTracking() {
return tracking.get();
}
public static final UUID getCurrentSessionGuid() {
SessionInfo sessionInfo;
if (currentSession == null || (sessionInfo = currentSession) == null) {
return null;
}
return sessionInfo.getSessionId();
}
public static final void onActivityCreated(Activity activity) {
singleThreadExecutor.execute(new Runnable() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda4
@Override // java.lang.Runnable
public final void run() {
ActivityLifecycleTracker.m507onActivityCreated$lambda1();
}
});
}
/* JADX INFO: Access modifiers changed from: private */
/* renamed from: onActivityCreated$lambda-1, reason: not valid java name */
public static final void m507onActivityCreated$lambda1() {
if (currentSession == null) {
currentSession = SessionInfo.Companion.getStoredSessionInfo();
}
}
public static final void onActivityResumed(Activity activity) {
Intrinsics.checkNotNullParameter(activity, "activity");
currActivity = new WeakReference<>(activity);
foregroundActivityCount.incrementAndGet();
INSTANCE.cancelCurrentTask();
final long currentTimeMillis = System.currentTimeMillis();
currentActivityAppearTime = currentTimeMillis;
final String activityName = Utility.getActivityName(activity);
CodelessManager.onActivityResumed(activity);
MetadataIndexer.onActivityResumed(activity);
SuggestedEventsManager.trackActivity(activity);
InAppPurchaseManager.startTracking();
final Context applicationContext = activity.getApplicationContext();
singleThreadExecutor.execute(new Runnable() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda2
@Override // java.lang.Runnable
public final void run() {
ActivityLifecycleTracker.m510onActivityResumed$lambda2(currentTimeMillis, activityName, applicationContext);
}
});
}
/* JADX INFO: Access modifiers changed from: private */
/* renamed from: onActivityResumed$lambda-2, reason: not valid java name */
public static final void m510onActivityResumed$lambda2(long j, String activityName, Context appContext) {
SessionInfo sessionInfo;
Intrinsics.checkNotNullParameter(activityName, "$activityName");
SessionInfo sessionInfo2 = currentSession;
Long sessionLastEventTime = sessionInfo2 == null ? null : sessionInfo2.getSessionLastEventTime();
if (currentSession == null) {
currentSession = new SessionInfo(Long.valueOf(j), null, null, 4, null);
SessionLogger sessionLogger = SessionLogger.INSTANCE;
String str = appId;
Intrinsics.checkNotNullExpressionValue(appContext, "appContext");
SessionLogger.logActivateApp(activityName, null, str, appContext);
} else if (sessionLastEventTime != null) {
long longValue = j - sessionLastEventTime.longValue();
if (longValue > INSTANCE.getSessionTimeoutInSeconds() * 1000) {
SessionLogger sessionLogger2 = SessionLogger.INSTANCE;
SessionLogger.logDeactivateApp(activityName, currentSession, appId);
String str2 = appId;
Intrinsics.checkNotNullExpressionValue(appContext, "appContext");
SessionLogger.logActivateApp(activityName, null, str2, appContext);
currentSession = new SessionInfo(Long.valueOf(j), null, null, 4, null);
} else if (longValue > 1000 && (sessionInfo = currentSession) != null) {
sessionInfo.incrementInterruptionCount();
}
}
SessionInfo sessionInfo3 = currentSession;
if (sessionInfo3 != null) {
sessionInfo3.setSessionLastEventTime(Long.valueOf(j));
}
SessionInfo sessionInfo4 = currentSession;
if (sessionInfo4 == null) {
return;
}
sessionInfo4.writeSessionToDisk();
}
/* JADX INFO: Access modifiers changed from: private */
public final void onActivityPaused(Activity activity) {
AtomicInteger atomicInteger = foregroundActivityCount;
if (atomicInteger.decrementAndGet() < 0) {
atomicInteger.set(0);
Log.w(TAG, INCORRECT_IMPL_WARNING);
}
cancelCurrentTask();
final long currentTimeMillis = System.currentTimeMillis();
final String activityName = Utility.getActivityName(activity);
CodelessManager.onActivityPaused(activity);
singleThreadExecutor.execute(new Runnable() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda1
@Override // java.lang.Runnable
public final void run() {
ActivityLifecycleTracker.m508onActivityPaused$lambda6(currentTimeMillis, activityName);
}
});
}
/* JADX INFO: Access modifiers changed from: private */
/* renamed from: onActivityPaused$lambda-6, reason: not valid java name */
public static final void m508onActivityPaused$lambda6(final long j, final String activityName) {
Intrinsics.checkNotNullParameter(activityName, "$activityName");
if (currentSession == null) {
currentSession = new SessionInfo(Long.valueOf(j), null, null, 4, null);
}
SessionInfo sessionInfo = currentSession;
if (sessionInfo != null) {
sessionInfo.setSessionLastEventTime(Long.valueOf(j));
}
if (foregroundActivityCount.get() <= 0) {
Runnable runnable = new Runnable() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda0
@Override // java.lang.Runnable
public final void run() {
ActivityLifecycleTracker.m509onActivityPaused$lambda6$lambda4(j, activityName);
}
};
synchronized (currentFutureLock) {
currentFuture = singleThreadExecutor.schedule(runnable, INSTANCE.getSessionTimeoutInSeconds(), TimeUnit.SECONDS);
Unit unit = Unit.INSTANCE;
}
}
long j2 = currentActivityAppearTime;
AutomaticAnalyticsLogger.logActivityTimeSpentEvent(activityName, j2 > 0 ? (j - j2) / 1000 : 0L);
SessionInfo sessionInfo2 = currentSession;
if (sessionInfo2 == null) {
return;
}
sessionInfo2.writeSessionToDisk();
}
/* JADX INFO: Access modifiers changed from: private */
/* renamed from: onActivityPaused$lambda-6$lambda-4, reason: not valid java name */
public static final void m509onActivityPaused$lambda6$lambda4(long j, String activityName) {
Intrinsics.checkNotNullParameter(activityName, "$activityName");
if (currentSession == null) {
currentSession = new SessionInfo(Long.valueOf(j), null, null, 4, null);
}
if (foregroundActivityCount.get() <= 0) {
SessionLogger sessionLogger = SessionLogger.INSTANCE;
SessionLogger.logDeactivateApp(activityName, currentSession, appId);
SessionInfo.Companion.clearSavedSessionFromDisk();
currentSession = null;
}
synchronized (currentFutureLock) {
currentFuture = null;
Unit unit = Unit.INSTANCE;
}
}
/* JADX INFO: Access modifiers changed from: private */
public final void onActivityDestroyed(Activity activity) {
CodelessManager.onActivityDestroyed(activity);
}
private final int getSessionTimeoutInSeconds() {
FetchedAppSettingsManager fetchedAppSettingsManager = FetchedAppSettingsManager.INSTANCE;
FetchedAppSettings appSettingsWithoutQuery = FetchedAppSettingsManager.getAppSettingsWithoutQuery(FacebookSdk.getApplicationId());
if (appSettingsWithoutQuery == null) {
return Constants.getDefaultAppEventsSessionTimeoutInSeconds();
}
return appSettingsWithoutQuery.getSessionTimeoutInSeconds();
}
private final void cancelCurrentTask() {
ScheduledFuture<?> scheduledFuture;
synchronized (currentFutureLock) {
try {
if (currentFuture != null && (scheduledFuture = currentFuture) != null) {
scheduledFuture.cancel(false);
}
currentFuture = null;
Unit unit = Unit.INSTANCE;
} catch (Throwable th) {
throw th;
}
}
}
public static final Activity getCurrentActivity() {
WeakReference<Activity> weakReference = currActivity;
if (weakReference == null || weakReference == null) {
return null;
}
return weakReference.get();
}
}