From 7eeab77aaf7938609a8babb38b6d8b1a3f1cbfd2 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 12 May 2016 22:35:18 +0200 Subject: [PATCH] in ACRA process, do not run everything in FDroidApp.onCreate() The `android:process` statement in AndroidManifest.xml causes another process to be created to run CrashReportActivity. This was causing lots of things to be started/run twice including CleanCacheService and WifiStateChangeService. --- app/src/main/java/org/fdroid/fdroid/FDroidApp.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index c774fccd9..7062d3c3f 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -20,6 +20,8 @@ package org.fdroid.fdroid; import android.annotation.TargetApi; import android.app.Activity; +import android.app.ActivityManager; +import android.app.ActivityManager.RunningAppProcessInfo; import android.app.Application; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothManager; @@ -183,7 +185,16 @@ public class FDroidApp extends Application { .build()); } updateLanguage(); + ACRA.init(this); + // if this is the ACRA process, do not run the rest of onCreate() + int pid = android.os.Process.myPid(); + ActivityManager manager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); + for (RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()) { + if (processInfo.pid == pid && "org.fdroid.fdroid:acra".equals(processInfo.processName)) { + return; + } + } PRNGFixes.apply();