diff --git a/src/com/android/settings/accounts/AvatarViewMixin.java b/src/com/android/settings/accounts/AvatarViewMixin.java index 3ce8c0a146c..9e762c72574 100644 --- a/src/com/android/settings/accounts/AvatarViewMixin.java +++ b/src/com/android/settings/accounts/AvatarViewMixin.java @@ -17,6 +17,7 @@ package com.android.settings.accounts; import android.accounts.Account; +import android.app.ActivityManager; import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; @@ -64,11 +65,13 @@ public class AvatarViewMixin implements LifecycleObserver { private final Context mContext; private final ImageView mAvatarView; private final MutableLiveData mAvatarImage; + private final ActivityManager mActivityManager; private String mAccountName; public AvatarViewMixin(SettingsHomepageActivity activity, ImageView avatarView) { mContext = activity.getApplicationContext(); + mActivityManager = mContext.getSystemService(ActivityManager.class); mAvatarView = avatarView; mAvatarView.setOnClickListener(v -> { Intent intent; @@ -114,7 +117,11 @@ public class AvatarViewMixin implements LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_START) public void onStart() { if (!mContext.getResources().getBoolean(R.bool.config_show_avatar_in_homepage)) { - Log.d(TAG, "Feature disabled. Skipping"); + Log.d(TAG, "Feature disabled by config. Skipping"); + return; + } + if (mActivityManager.isLowRamDevice()) { + Log.d(TAG, "Feature disabled on low ram device. Skipping"); return; } if (hasAccount()) { diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index 9e869a9daab..9b83f88e832 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -17,6 +17,7 @@ package com.android.settings.homepage; import android.animation.LayoutTransition; +import android.app.ActivityManager; import android.app.settings.SettingsEnums; import android.os.Bundle; import android.view.View; @@ -53,7 +54,10 @@ public class SettingsHomepageActivity extends SettingsBaseActivity { final AvatarViewMixin avatarViewMixin = new AvatarViewMixin(this, avatarView); getLifecycle().addObserver(avatarViewMixin); - showFragment(new ContextualCardsFragment(), R.id.contextual_cards_content); + if (!getSystemService(ActivityManager.class).isLowRamDevice()) { + // Only allow contextual feature on high ram devices. + showFragment(new ContextualCardsFragment(), R.id.contextual_cards_content); + } showFragment(new TopLevelSettings(), R.id.main_content); ((FrameLayout) findViewById(R.id.main_content)) .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING); diff --git a/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java b/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java index 6a2348c6717..8c75e33b397 100644 --- a/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java +++ b/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java @@ -27,6 +27,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.accounts.Account; +import android.app.ActivityManager; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.Context; @@ -55,6 +56,7 @@ import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.shadow.api.Shadow; +import org.robolectric.shadows.ShadowActivityManager; import org.robolectric.shadows.ShadowContentResolver; import org.robolectric.shadows.ShadowPackageManager; @@ -100,6 +102,19 @@ public class AvatarViewMixinTest { verify(mixin, never()).hasAccount(); } + @Test + public void onStart_lowRamDevice_doNothing() { + final AvatarViewMixin mixin = spy(new AvatarViewMixin(mActivity, mImageView)); + + final ShadowActivityManager activityManager = + Shadow.extract(mContext.getSystemService(ActivityManager.class)); + activityManager.setIsLowRamDevice(true); + + mixin.onStart(); + + verify(mixin, never()).hasAccount(); + } + @Test @Config(qualifiers = "mcc999", shadows = {