diff --git a/acra-core/src/main/java/org/acra/builder/ReportExecutor.java b/acra-core/src/main/java/org/acra/builder/ReportExecutor.java index 50f2fc420..e53e230bb 100644 --- a/acra-core/src/main/java/org/acra/builder/ReportExecutor.java +++ b/acra-core/src/main/java/org/acra/builder/ReportExecutor.java @@ -166,9 +166,9 @@ public final void execute(@NonNull final ReportBuilder reportBuilder) { StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites(); final File reportFile = getReportFileName(crashReportData); saveCrashReportFile(reportFile, crashReportData); - StrictMode.setThreadPolicy(oldPolicy); final ReportInteractionExecutor executor = new ReportInteractionExecutor(context, config); + StrictMode.setThreadPolicy(oldPolicy); if (reportBuilder.isSendSilently()) { //if size == 0 we have no interaction and can send all reports startSendingReports(executor.hasInteractions()); diff --git a/acra-dialog/src/main/java/org/acra/dialog/BaseCrashReportDialog.java b/acra-dialog/src/main/java/org/acra/dialog/BaseCrashReportDialog.java index 3a31cd2b4..af9b4b3c7 100644 --- a/acra-dialog/src/main/java/org/acra/dialog/BaseCrashReportDialog.java +++ b/acra-dialog/src/main/java/org/acra/dialog/BaseCrashReportDialog.java @@ -110,7 +110,7 @@ protected void init(@Nullable Bundle savedInstanceState) { * Cancel any pending crash reports. */ protected final void cancelReports() { - new BulkReportDeleter(getApplicationContext()).deleteReports(false, 0); + new Thread(() -> new BulkReportDeleter(this).deleteReports(false, 0)).start(); } @@ -121,20 +121,22 @@ protected final void cancelReports() { * @param userEmail Email address (may be null) provided by the client. */ protected final void sendCrash(@Nullable String comment, @Nullable String userEmail) { - final CrashReportPersister persister = new CrashReportPersister(); - try { - if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "Add user comment to " + reportFile); - final CrashReportData crashData = persister.load(reportFile); - crashData.put(USER_COMMENT, comment == null ? "" : comment); - crashData.put(USER_EMAIL, userEmail == null ? "" : userEmail); - persister.store(crashData, reportFile); - } catch (IOException | JSONException e) { - ACRA.log.w(LOG_TAG, "User comment not added: ", e); - } - - // Start the report sending task - final SenderServiceStarter starter = new SenderServiceStarter(getApplicationContext(), config); - starter.startService(false, true); + new Thread(() -> { + final CrashReportPersister persister = new CrashReportPersister(); + try { + if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "Add user comment to " + reportFile); + final CrashReportData crashData = persister.load(reportFile); + crashData.put(USER_COMMENT, comment == null ? "" : comment); + crashData.put(USER_EMAIL, userEmail == null ? "" : userEmail); + persister.store(crashData, reportFile); + } catch (IOException | JSONException e) { + ACRA.log.w(LOG_TAG, "User comment not added: ", e); + } + + // Start the report sending task + final SenderServiceStarter starter = new SenderServiceStarter(this, config); + starter.startService(false, true); + }).start(); } /**