From e4d0ed502df4a46c7e6997e5f9a7da5ebc344cae Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Thu, 26 May 2016 11:07:53 -0400 Subject: [PATCH] Fix crash from battery saver switch Turns out most things expect the conditions to be loaded immediately so if the dashboard hasn't been hit, they crash. Instead load immediately for everything but the dashboard. Change-Id: Iaa1114c88b3766e2ac513acb417ef2a55a0f4e7f Fixes: 28952354 --- .../settings/dashboard/DashboardSummary.java | 2 +- .../dashboard/conditional/ConditionManager.java | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index 18b941cea3c..e08173f26df 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -87,7 +87,7 @@ public class DashboardSummary extends InstrumentedFragment mSummaryLoader = new SummaryLoader(getActivity(), categories); setHasOptionsMenu(true); Context context = getContext(); - mConditionManager = ConditionManager.get(context); + mConditionManager = ConditionManager.get(context, false); mSuggestionParser = new SuggestionParser(context, context.getSharedPreferences(SUGGESTIONS, 0), R.xml.suggestion_ordering); mSuggestionsChecks = new SuggestionsChecks(getContext()); diff --git a/src/com/android/settings/dashboard/conditional/ConditionManager.java b/src/com/android/settings/dashboard/conditional/ConditionManager.java index f38bb2ac531..ad0e839dc0e 100644 --- a/src/com/android/settings/dashboard/conditional/ConditionManager.java +++ b/src/com/android/settings/dashboard/conditional/ConditionManager.java @@ -54,10 +54,15 @@ public class ConditionManager { private final ArrayList mListeners = new ArrayList<>(); - private ConditionManager(Context context) { + private ConditionManager(Context context, boolean loadConditionsNow) { mContext = context; mConditions = new ArrayList<>(); - new ConditionLoader().execute(); + if (loadConditionsNow) { + ConditionLoader loader = new ConditionLoader(); + loader.onPostExecute(loader.doInBackground()); + } else { + new ConditionLoader().execute(); + } } public void refreshAll() { @@ -241,8 +246,12 @@ public class ConditionManager { } public static ConditionManager get(Context context) { + return get(context, true); + } + + public static ConditionManager get(Context context, boolean loadConditionsNow) { if (sInstance == null) { - sInstance = new ConditionManager(context.getApplicationContext()); + sInstance = new ConditionManager(context.getApplicationContext(), loadConditionsNow); } return sInstance; }