diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index d96ec39507a..6688831248c 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -119,6 +119,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements private SplitControllerCallbackAdapter mSplitControllerAdapter; private SplitInfoCallback mCallback; + private boolean mAllowUpdateSuggestion = true; /** A listener receiving homepage loaded events. */ public interface HomepageLoadedListener { @@ -155,15 +156,18 @@ public class SettingsHomepageActivity extends FragmentActivity implements * to avoid the flicker caused by the suggestion suddenly appearing/disappearing. */ public void showHomepageWithSuggestion(boolean showSuggestion) { + if (mAllowUpdateSuggestion) { + Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion); + mAllowUpdateSuggestion = false; + mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); + mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); + } + if (mHomepageView == null) { return; } - Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion); final View homepageView = mHomepageView; - mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); - mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); mHomepageView = null; - mLoadedListeners.forEach(listener -> listener.onHomepageLoaded()); mLoadedListeners.clear(); homepageView.setVisibility(View.VISIBLE); @@ -278,6 +282,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements @Override protected void onStop() { super.onStop(); + mAllowUpdateSuggestion = true; if (mSplitControllerAdapter != null && mCallback != null) { mSplitControllerAdapter.removeSplitListener(mCallback); mCallback = null; diff --git a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java index c281dca8bc4..80d77c4900c 100644 --- a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java +++ b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java @@ -167,6 +167,19 @@ public class SettingsHomepageActivityTest { assertThat(suggestionTile.getVisibility()).isEqualTo(View.GONE); } + @Test + public void showHomepageWithSuggestion_callAfterOnStop_shouldUpdateVisibility() { + final SettingsHomepageActivity activity = Robolectric.buildActivity( + SettingsHomepageActivity.class).create().get(); + final View suggestionTile = activity.findViewById(R.id.suggestion_content); + + activity.showHomepageWithSuggestion(true); + activity.onStop(); + activity.showHomepageWithSuggestion(false); + + assertThat(suggestionTile.getVisibility()).isEqualTo(View.GONE); + } + @Test public void onStart_isNotDebuggable_shouldHideSystemOverlay() { ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false);