kopia lustrzana https://github.com/ryukoposting/Signal-Android
35 wiersze
1.2 KiB
Java
35 wiersze
1.2 KiB
Java
package org.thoughtcrime.securesms.util;
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import org.signal.core.util.ExceptionUtil;
|
|
import org.signal.core.util.logging.Log;
|
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
|
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
|
|
|
import io.reactivex.rxjava3.exceptions.OnErrorNotImplementedException;
|
|
|
|
public class SignalUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
|
|
|
|
private static final String TAG = Log.tag(SignalUncaughtExceptionHandler.class);
|
|
|
|
private final Thread.UncaughtExceptionHandler originalHandler;
|
|
|
|
public SignalUncaughtExceptionHandler(@NonNull Thread.UncaughtExceptionHandler originalHandler) {
|
|
this.originalHandler = originalHandler;
|
|
}
|
|
|
|
@Override
|
|
public void uncaughtException(@NonNull Thread t, @NonNull Throwable e) {
|
|
if (e instanceof OnErrorNotImplementedException && e.getCause() != null) {
|
|
e = e.getCause();
|
|
}
|
|
|
|
Log.e(TAG, "", e, true);
|
|
SignalStore.blockUntilAllWritesFinished();
|
|
Log.blockUntilAllWritesFinished();
|
|
ApplicationDependencies.getJobManager().flush();
|
|
originalHandler.uncaughtException(t, ExceptionUtil.joinStackTraceAndMessage(e));
|
|
}
|
|
}
|