Disable avatar and contextual cards on low ram devices.
Fixes: 124127763 Test: robotest & manually inspected hprof Change-Id: I8d328b782a9b1871b76edf433d2378d06face14a
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.accounts;
|
package com.android.settings.accounts;
|
||||||
|
|
||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -64,11 +65,13 @@ public class AvatarViewMixin implements LifecycleObserver {
|
|||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final ImageView mAvatarView;
|
private final ImageView mAvatarView;
|
||||||
private final MutableLiveData<Bitmap> mAvatarImage;
|
private final MutableLiveData<Bitmap> mAvatarImage;
|
||||||
|
private final ActivityManager mActivityManager;
|
||||||
|
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
|
|
||||||
public AvatarViewMixin(SettingsHomepageActivity activity, ImageView avatarView) {
|
public AvatarViewMixin(SettingsHomepageActivity activity, ImageView avatarView) {
|
||||||
mContext = activity.getApplicationContext();
|
mContext = activity.getApplicationContext();
|
||||||
|
mActivityManager = mContext.getSystemService(ActivityManager.class);
|
||||||
mAvatarView = avatarView;
|
mAvatarView = avatarView;
|
||||||
mAvatarView.setOnClickListener(v -> {
|
mAvatarView.setOnClickListener(v -> {
|
||||||
Intent intent;
|
Intent intent;
|
||||||
@@ -114,7 +117,11 @@ public class AvatarViewMixin implements LifecycleObserver {
|
|||||||
@OnLifecycleEvent(Lifecycle.Event.ON_START)
|
@OnLifecycleEvent(Lifecycle.Event.ON_START)
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
if (!mContext.getResources().getBoolean(R.bool.config_show_avatar_in_homepage)) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
if (hasAccount()) {
|
if (hasAccount()) {
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.homepage;
|
package com.android.settings.homepage;
|
||||||
|
|
||||||
import android.animation.LayoutTransition;
|
import android.animation.LayoutTransition;
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -53,7 +54,10 @@ public class SettingsHomepageActivity extends SettingsBaseActivity {
|
|||||||
final AvatarViewMixin avatarViewMixin = new AvatarViewMixin(this, avatarView);
|
final AvatarViewMixin avatarViewMixin = new AvatarViewMixin(this, avatarView);
|
||||||
getLifecycle().addObserver(avatarViewMixin);
|
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);
|
showFragment(new TopLevelSettings(), R.id.main_content);
|
||||||
((FrameLayout) findViewById(R.id.main_content))
|
((FrameLayout) findViewById(R.id.main_content))
|
||||||
.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
|
.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
|
||||||
|
@@ -27,6 +27,7 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.content.ContentProvider;
|
import android.content.ContentProvider;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -55,6 +56,7 @@ import org.robolectric.annotation.Config;
|
|||||||
import org.robolectric.annotation.Implementation;
|
import org.robolectric.annotation.Implementation;
|
||||||
import org.robolectric.annotation.Implements;
|
import org.robolectric.annotation.Implements;
|
||||||
import org.robolectric.shadow.api.Shadow;
|
import org.robolectric.shadow.api.Shadow;
|
||||||
|
import org.robolectric.shadows.ShadowActivityManager;
|
||||||
import org.robolectric.shadows.ShadowContentResolver;
|
import org.robolectric.shadows.ShadowContentResolver;
|
||||||
import org.robolectric.shadows.ShadowPackageManager;
|
import org.robolectric.shadows.ShadowPackageManager;
|
||||||
|
|
||||||
@@ -100,6 +102,19 @@ public class AvatarViewMixinTest {
|
|||||||
verify(mixin, never()).hasAccount();
|
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
|
@Test
|
||||||
@Config(qualifiers = "mcc999",
|
@Config(qualifiers = "mcc999",
|
||||||
shadows = {
|
shadows = {
|
||||||
|
Reference in New Issue
Block a user