jimu-decompiled/sources/com/squareup/leakcanary/AndroidRefWatcherBuilder.java
2025-05-13 19:24:51 +02:00

103 lines
3.9 KiB
Java

package com.squareup.leakcanary;
import android.content.Context;
import com.squareup.leakcanary.HeapDump;
import com.squareup.leakcanary.Reachability;
import com.squareup.leakcanary.internal.DisplayLeakActivity;
import com.squareup.leakcanary.internal.FragmentRefWatcher;
import com.squareup.leakcanary.internal.LeakCanaryInternals;
import java.util.List;
import java.util.concurrent.TimeUnit;
/* loaded from: classes.dex */
public final class AndroidRefWatcherBuilder extends RefWatcherBuilder<AndroidRefWatcherBuilder> {
private static final long DEFAULT_WATCH_DELAY_MILLIS = TimeUnit.SECONDS.toMillis(5);
private final Context context;
private boolean watchActivities = true;
private boolean watchFragments = true;
private boolean enableDisplayLeakActivity = false;
AndroidRefWatcherBuilder(Context context) {
this.context = context.getApplicationContext();
}
public RefWatcher buildAndInstall() {
if (LeakCanaryInternals.installedRefWatcher != null) {
throw new UnsupportedOperationException("buildAndInstall() should only be called once.");
}
RefWatcher build = build();
if (build != RefWatcher.DISABLED) {
if (this.enableDisplayLeakActivity) {
LeakCanaryInternals.setEnabledAsync(this.context, DisplayLeakActivity.class, true);
}
if (this.watchActivities) {
ActivityRefWatcher.install(this.context, build);
}
if (this.watchFragments) {
FragmentRefWatcher.Helper.install(this.context, build);
}
}
LeakCanaryInternals.installedRefWatcher = build;
return build;
}
@Override // com.squareup.leakcanary.RefWatcherBuilder
protected DebuggerControl defaultDebuggerControl() {
return new AndroidDebuggerControl();
}
@Override // com.squareup.leakcanary.RefWatcherBuilder
protected ExcludedRefs defaultExcludedRefs() {
return AndroidExcludedRefs.createAppDefaults().build();
}
@Override // com.squareup.leakcanary.RefWatcherBuilder
protected HeapDump.Listener defaultHeapDumpListener() {
return new ServiceHeapDumpListener(this.context, DisplayLeakService.class);
}
@Override // com.squareup.leakcanary.RefWatcherBuilder
protected HeapDumper defaultHeapDumper() {
return new AndroidHeapDumper(this.context, LeakCanaryInternals.getLeakDirectoryProvider(this.context));
}
@Override // com.squareup.leakcanary.RefWatcherBuilder
protected List<Class<? extends Reachability.Inspector>> defaultReachabilityInspectorClasses() {
return AndroidReachabilityInspectors.defaultAndroidInspectors();
}
@Override // com.squareup.leakcanary.RefWatcherBuilder
protected WatchExecutor defaultWatchExecutor() {
return new AndroidWatchExecutor(DEFAULT_WATCH_DELAY_MILLIS);
}
@Override // com.squareup.leakcanary.RefWatcherBuilder
protected boolean isDisabled() {
return LeakCanary.isInAnalyzerProcess(this.context);
}
public AndroidRefWatcherBuilder listenerServiceClass(Class<? extends AbstractAnalysisResultService> cls) {
this.enableDisplayLeakActivity = DisplayLeakService.class.isAssignableFrom(cls);
return heapDumpListener(new ServiceHeapDumpListener(this.context, cls));
}
public AndroidRefWatcherBuilder maxStoredHeapDumps(int i) {
LeakCanary.setLeakDirectoryProvider(new DefaultLeakDirectoryProvider(this.context, i));
return self();
}
public AndroidRefWatcherBuilder watchActivities(boolean z) {
this.watchActivities = z;
return this;
}
public AndroidRefWatcherBuilder watchDelay(long j, TimeUnit timeUnit) {
return watchExecutor(new AndroidWatchExecutor(timeUnit.toMillis(j)));
}
public AndroidRefWatcherBuilder watchFragments(boolean z) {
this.watchFragments = z;
return this;
}
}