Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 627fd392 authored by Jason Chiu's avatar Jason Chiu
Browse files

Improve the cold start performance

The performance regressed since the previous change that hide the
homepage view from using View.GONE to View.INVISIBLE

This change only initializes the list views in the invisible homepage
view to prevent a scroll flicker when scrolling is needed.

Test: manual
Bug: 206555277
Bug: 205823792
Change-Id: I8f173b135cfa1d27a1362d5fa8e3f338e2428ad2
parent 7bfe3e86
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -167,10 +167,13 @@ public class SettingsHomepageActivity extends FragmentActivity implements
        mCategoryMixin = new CategoryMixin(this);
        getLifecycle().addObserver(mCategoryMixin);

        final String highlightMenuKey = getHighlightMenuKey();
        // Only allow features on high ram devices.
        if (!getSystemService(ActivityManager.class).isLowRamDevice()) {
            initAvatarView();
            showSuggestionFragment();
            final boolean scrollNeeded = mIsEmbeddingActivityEnabled
                    && !TextUtils.equals(getString(DEFAULT_HIGHLIGHT_MENU_KEY), highlightMenuKey);
            showSuggestionFragment(scrollNeeded);
            if (FeatureFlagUtils.isEnabled(this, FeatureFlags.CONTEXTUAL_HOME)) {
                showFragment(() -> new ContextualCardsFragment(), R.id.contextual_cards_content);
            }
@@ -178,7 +181,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
        mMainFragment = showFragment(() -> {
            final TopLevelSettings fragment = new TopLevelSettings();
            fragment.getArguments().putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY,
                    getHighlightMenuKey());
                    highlightMenuKey);
            return fragment;
        }, R.id.main_content);

@@ -265,7 +268,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
        findViewById(R.id.settings_homepage_container).setBackgroundColor(color);
    }

    private void showSuggestionFragment() {
    private void showSuggestionFragment(boolean scrollNeeded) {
        final Class<? extends Fragment> fragmentClass = FeatureFactory.getFactory(this)
                .getSuggestionFeatureProvider(this).getContextualSuggestionFragment();
        if (fragmentClass == null) {
@@ -275,8 +278,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements
        mSuggestionView = findViewById(R.id.suggestion_content);
        mTwoPaneSuggestionView = findViewById(R.id.two_pane_suggestion_content);
        mHomepageView = findViewById(R.id.settings_homepage_container);
        // Hide the homepage for preparing the suggestion.
        mHomepageView.setVisibility(View.INVISIBLE);
        // Hide the homepage for preparing the suggestion. If scrolling is needed, the list views
        // should be initialized in the invisible homepage view to prevent a scroll flicker.
        mHomepageView.setVisibility(scrollNeeded ? View.INVISIBLE : View.GONE);
        // Schedule a timer to show the homepage and hide the suggestion on timeout.
        mHomepageView.postDelayed(() -> showHomepageWithSuggestion(false),
                HOMEPAGE_LOADING_TIMEOUT_MS);