Skip to content

Commit ad7b591

Browse files
authored
Avoid Tasks in checkForPreviousCrash (#6194)
Avoid `Task`s in `checkForPreviousCrash`. This is a step towards removing the nasty `awaitEvenIfOnMainThread`.
1 parent f51fa9c commit ad7b591

File tree

1 file changed

+19
-21
lines changed
  • firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/common

1 file changed

+19
-21
lines changed

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/common/CrashlyticsCore.java

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -433,17 +433,11 @@ CrashlyticsController getController() {
433433
* initialization to upload crash result. 4 seconds is chosen for the lock to prevent ANR
434434
*/
435435
private void finishInitSynchronously(SettingsProvider settingsProvider) {
436-
437-
final Runnable runnable =
438-
new Runnable() {
439-
@Override
440-
public void run() {
441-
doBackgroundInitialization(settingsProvider);
442-
}
443-
};
444-
445-
// TODO(mrober): Refactor to Tasks. Maybe just re-use async task and awaitEvenIfOnMain?
446-
final Future<?> future = crashlyticsWorkers.common.getExecutor().submit(runnable);
436+
Future<?> future =
437+
crashlyticsWorkers
438+
.common
439+
.getExecutor()
440+
.submit(() -> doBackgroundInitialization(settingsProvider));
447441

448442
Logger.getLogger()
449443
.d(
@@ -452,12 +446,13 @@ public void run() {
452446

453447
try {
454448
future.get(DEFAULT_MAIN_HANDLER_TIMEOUT_SEC, TimeUnit.SECONDS);
455-
} catch (InterruptedException e) {
456-
Logger.getLogger().e("Crashlytics was interrupted during initialization.", e);
457-
} catch (ExecutionException e) {
458-
Logger.getLogger().e("Crashlytics encountered a problem during initialization.", e);
459-
} catch (TimeoutException e) {
460-
Logger.getLogger().e("Crashlytics timed out during initialization.", e);
449+
} catch (InterruptedException ex) {
450+
Logger.getLogger().e("Crashlytics was interrupted during initialization.", ex);
451+
Thread.currentThread().interrupt();
452+
} catch (ExecutionException ex) {
453+
Logger.getLogger().e("Crashlytics encountered a problem during initialization.", ex);
454+
} catch (TimeoutException ex) {
455+
Logger.getLogger().e("Crashlytics timed out during initialization.", ex);
461456
}
462457
}
463458

@@ -496,13 +491,16 @@ boolean didPreviousInitializationFail() {
496491
// region Previous crash handling
497492

498493
private void checkForPreviousCrash() {
499-
Task<Boolean> task =
500-
crashlyticsWorkers.common.submit(() -> controller.didCrashOnPreviousExecution());
494+
Future<Boolean> future =
495+
crashlyticsWorkers
496+
.common
497+
.getExecutor()
498+
.submit(() -> controller.didCrashOnPreviousExecution());
501499

502500
Boolean result;
503501
try {
504-
result = Utils.awaitEvenIfOnMainThread(task);
505-
} catch (Exception e) {
502+
result = future.get(DEFAULT_MAIN_HANDLER_TIMEOUT_SEC, TimeUnit.SECONDS);
503+
} catch (Exception ignored) {
506504
didCrashOnPreviousExecution = false;
507505
return;
508506
}

0 commit comments

Comments
 (0)