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
diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java
index 18b941c..e08173f 100644
--- a/src/com/android/settings/dashboard/DashboardSummary.java
+++ b/src/com/android/settings/dashboard/DashboardSummary.java
@@ -87,7 +87,7 @@
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 f38bb2a..ad0e839 100644
--- a/src/com/android/settings/dashboard/conditional/ConditionManager.java
+++ b/src/com/android/settings/dashboard/conditional/ConditionManager.java
@@ -54,10 +54,15 @@
private final ArrayList<ConditionListener> 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 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;
}