Niedzielski has uploaded a new change for review. https://gerrit.wikimedia.org/r/289877
Change subject: Abort relaunch when a crash loop is detected ...................................................................... Abort relaunch when a crash loop is detected Don't attempt to launch the crash report Activity when the current boot sequence never made it to any UI. In these cases, fallback to default Android behavior (terminate the current Activity and show the previous Activity in the stack, if any). Bug: T135854 Change-Id: I6276dd32ccd3b22c54f0063949ca7480eed3db33 --- M app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java M app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java M app/src/main/java/org/wikipedia/settings/Prefs.java M app/src/main/res/values/preference_keys.xml M app/src/main/res/xml/developer_preferences.xml 5 files changed, 25 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/77/289877/1 diff --git a/app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java b/app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java index 520fdfc..1346342 100644 --- a/app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java +++ b/app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java @@ -12,6 +12,7 @@ import org.wikipedia.R; import org.wikipedia.WikipediaApp; import org.wikipedia.auth.AccountUtil; +import org.wikipedia.settings.Prefs; import org.wikipedia.util.ApiUtil; import java.lang.reflect.Field; @@ -22,6 +23,9 @@ @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + Prefs.crashedBeforeActivityCreated(false); + ActivityUtil.requestFullUserOrientation(this); setTheme(); diff --git a/app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java b/app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java index 4a22545..1963b4f 100644 --- a/app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java +++ b/app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java @@ -11,6 +11,7 @@ import org.wikipedia.WikipediaApp; import org.wikipedia.crash.BaseCrashReporter; import org.wikipedia.crash.CrashReportActivity; +import org.wikipedia.settings.Prefs; import org.wikipedia.util.log.L; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK; @@ -83,7 +84,12 @@ @Override public void onCrash() { - launchCrashReportActivity(); + if (!Prefs.crashedBeforeActivityCreated()) { + Prefs.crashedBeforeActivityCreated(true); + launchCrashReportActivity(); + } else { + L.i("Crashed before showing UI. Skipping reboot."); + } terminateApp(); } @@ -98,4 +104,4 @@ Runtime.getRuntime().exit(0); } } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.java b/app/src/main/java/org/wikipedia/settings/Prefs.java index 794c9b1..3babcc5 100644 --- a/app/src/main/java/org/wikipedia/settings/Prefs.java +++ b/app/src/main/java/org/wikipedia/settings/Prefs.java @@ -104,6 +104,14 @@ remove(getCookiesForDomainKey(domain)); } + public static boolean crashedBeforeActivityCreated() { + return getBoolean(R.string.preference_key_crashed_before_activity_created, true); + } + + public static void crashedBeforeActivityCreated(boolean crashed) { + setBoolean(R.string.preference_key_crashed_before_activity_created, crashed); + } + public static boolean isCrashReportAutoUploadEnabled() { return getBoolean(R.string.preference_key_auto_upload_crash_reports, true); } diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 503fbd7..c37bfbb 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -39,6 +39,7 @@ <string name="preference_key_session_data">session_data</string> <string name="preference_key_session_timeout">session_timeout</string> <string name="preference_key_remote_log">remoteLog</string> + <string name="preference_key_crashed_before_activity_created">crashedBeforeActivityCreated</string> <!-- Note: this value _must_ match net.hockeyapp.android.CrashManager.ALWAYS_SEND_KEY. --> <string name="preference_key_auto_upload_crash_reports">always_send_crash_reports</string> </resources> diff --git a/app/src/main/res/xml/developer_preferences.xml b/app/src/main/res/xml/developer_preferences.xml index c63a6e5..fd2d653 100644 --- a/app/src/main/res/xml/developer_preferences.xml +++ b/app/src/main/res/xml/developer_preferences.xml @@ -152,6 +152,10 @@ android:key="@string/preference_key_show_developer_settings" android:title="@string/preference_key_show_developer_settings" /> + <SwitchPreferenceCompat + android:key="@string/preference_key_crashed_before_activity_created" + android:title="@string/preference_key_crashed_before_activity_created" /> + <Preference android:key="@string/preferences_developer_crash_key" android:title="@string/preferences_developer_crash_title" android:summary="@string/preferences_developer_crash_summary" /> -- To view, visit https://gerrit.wikimedia.org/r/289877 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6276dd32ccd3b22c54f0063949ca7480eed3db33 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits