Merge "Fix how Home Activities are refreshed" into lmp-dev

This commit is contained in:
Fabrice Di Meglio
2014-07-24 01:25:38 +00:00
committed by Android (Google) Code Review
5 changed files with 83 additions and 86 deletions

View File

@@ -304,7 +304,7 @@ public class SettingsActivity extends Activity
if (mBatteryPresent != batteryPresent) {
mBatteryPresent = batteryPresent;
invalidateCategories();
invalidateCategories(true);
}
}
}
@@ -334,15 +334,16 @@ public class SettingsActivity extends Activity
// Categories
private ArrayList<DashboardCategory> mCategories = new ArrayList<DashboardCategory>();
private boolean mNeedToRebuildCategories;
private static final String MSG_DATA_FORCE_REFRESH = "msg_data_force_refresh";
private static final int MSG_BUILD_CATEGORIES = 1;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_BUILD_CATEGORIES: {
if(mNeedToRebuildCategories) {
final boolean forceRefresh = msg.getData().getBoolean(MSG_DATA_FORCE_REFRESH);
if (forceRefresh) {
buildDashboardCategories(mCategories);
}
} break;
@@ -357,10 +358,9 @@ public class SettingsActivity extends Activity
return mSwitchBar;
}
public List<DashboardCategory> getDashboardCategories() {
if (mNeedToRebuildCategories || mCategories.size() == 0) {
public List<DashboardCategory> getDashboardCategories(boolean forceRefresh) {
if (forceRefresh || mCategories.size() == 0) {
buildDashboardCategories(mCategories);
mNeedToRebuildCategories = false;
}
return mCategories;
}
@@ -389,9 +389,11 @@ public class SettingsActivity extends Activity
return false;
}
private void invalidateCategories() {
private void invalidateCategories(boolean forceRefresh) {
if (!mHandler.hasMessages(MSG_BUILD_CATEGORIES)) {
mHandler.sendEmptyMessage(MSG_BUILD_CATEGORIES);
Message msg = new Message();
msg.what = MSG_BUILD_CATEGORIES;
msg.getData().putBoolean(MSG_DATA_FORCE_REFRESH, forceRefresh);
}
}
@@ -712,15 +714,13 @@ public class SettingsActivity extends Activity
final int newHomeActivityCount = getHomeActivitiesCount();
if (newHomeActivityCount != mHomeActivitiesCount) {
mHomeActivitiesCount = newHomeActivityCount;
setNeedToRebuildCategories(true);
invalidateCategories();
invalidateCategories(true);
}
mDevelopmentPreferencesListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
setNeedToRebuildCategories(true);
invalidateCategories();
invalidateCategories(true);
}
};
mDevelopmentPreferences.registerOnSharedPreferenceChangeListener(
@@ -740,7 +740,6 @@ public class SettingsActivity extends Activity
super.onPause();
unregisterReceiver(mBatteryInfoReceiver);
mDynamicIndexableContentMonitor.unregister();
}
@@ -899,10 +898,6 @@ public class SettingsActivity extends Activity
return f;
}
public void setNeedToRebuildCategories(boolean need) {
mNeedToRebuildCategories = need;
}
/**
* Called when the activity needs its list of categories/tiles built.
*
@@ -1167,6 +1162,7 @@ public class SettingsActivity extends Activity
}
try {
mHomeActivitiesCount = getHomeActivitiesCount();
if (mHomeActivitiesCount < 2) {
// When there's only one available home app, omit this settings
// category entirely at the top level UI. If the user just