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

50 lines
2.6 KiB
Java

package com.squareup.leakcanary.internal;
import android.content.Context;
import android.content.Intent;
import androidx.core.content.ContextCompat;
import com.squareup.leakcanary.AbstractAnalysisResultService;
import com.squareup.leakcanary.AnalyzerProgressListener;
import com.squareup.leakcanary.CanaryLog;
import com.squareup.leakcanary.HeapAnalyzer;
import com.squareup.leakcanary.HeapDump;
import com.squareup.leakcanary.R;
/* loaded from: classes.dex */
public final class HeapAnalyzerService extends ForegroundService implements AnalyzerProgressListener {
private static final String HEAPDUMP_EXTRA = "heapdump_extra";
private static final String LISTENER_CLASS_EXTRA = "listener_class_extra";
public HeapAnalyzerService() {
super(HeapAnalyzerService.class.getSimpleName(), R.string.leak_canary_notification_analysing);
}
public static void runAnalysis(Context context, HeapDump heapDump, Class<? extends AbstractAnalysisResultService> cls) {
LeakCanaryInternals.setEnabledBlocking(context, HeapAnalyzerService.class, true);
LeakCanaryInternals.setEnabledBlocking(context, cls, true);
Intent intent = new Intent(context, (Class<?>) HeapAnalyzerService.class);
intent.putExtra(LISTENER_CLASS_EXTRA, cls.getName());
intent.putExtra(HEAPDUMP_EXTRA, heapDump);
ContextCompat.a(context, intent);
}
@Override // com.squareup.leakcanary.internal.ForegroundService
protected void onHandleIntentInForeground(Intent intent) {
if (intent == null) {
CanaryLog.d("HeapAnalyzerService received a null intent, ignoring.", new Object[0]);
return;
}
String stringExtra = intent.getStringExtra(LISTENER_CLASS_EXTRA);
HeapDump heapDump = (HeapDump) intent.getSerializableExtra(HEAPDUMP_EXTRA);
AbstractAnalysisResultService.sendResultToListener(this, stringExtra, heapDump, new HeapAnalyzer(heapDump.excludedRefs, this, heapDump.reachabilityInspectorClasses).checkForLeak(heapDump.heapDumpFile, heapDump.referenceKey, heapDump.computeRetainedHeapSize));
}
@Override // com.squareup.leakcanary.AnalyzerProgressListener
public void onProgressUpdate(AnalyzerProgressListener.Step step) {
int ordinal = (int) ((step.ordinal() * 100.0f) / AnalyzerProgressListener.Step.values().length);
CanaryLog.d("Analysis in progress, working on: %s", step.name());
String lowerCase = step.name().replace("_", " ").toLowerCase();
showForegroundNotification(100, ordinal, false, lowerCase.substring(0, 1).toUpperCase() + lowerCase.substring(1));
}
}