AppLovinExceptionHandler.java 源代码


package com.applovin.impl.sdk;

import android.os.Process;
import java.lang.Thread;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;

public class AppLovinExceptionHandler implements Thread.UncaughtExceptionHandler {

    private static final AppLovinExceptionHandler f7519d = new AppLovinExceptionHandler();

    private final Set<k> f7520a = new HashSet(2);

    private final AtomicBoolean f7521b = new AtomicBoolean();

    private Thread.UncaughtExceptionHandler f7522c;

    public static AppLovinExceptionHandler shared() {
        return f7519d;
    }

    public void addSdk(k kVar) {
        this.f7520a.add(kVar);
    }

    public void enable() {
        if (this.f7521b.compareAndSet(false, true)) {
            this.f7522c = Thread.getDefaultUncaughtExceptionHandler();
            Thread.setDefaultUncaughtExceptionHandler(this);
        }
    }

    @Override
    public void uncaughtException(Thread thread, Throwable th) {
        for (k kVar : this.f7520a) {
            kVar.U0().g("AppLovinExceptionHandler", "Detected unhandled exception");
            ((EventServiceImpl) kVar.P0()).trackEventSynchronously("paused");
            ((EventServiceImpl) kVar.P0()).trackEventSynchronously("crashed");
        }
        try {
            Thread.sleep(100L);
        } catch (InterruptedException unused) {
        }
        Thread.UncaughtExceptionHandler uncaughtExceptionHandler = this.f7522c;
        if (uncaughtExceptionHandler != null) {
            uncaughtExceptionHandler.uncaughtException(thread, th);
        } else {
            Process.killProcess(Process.myPid());
            System.exit(1);
        }
    }
}