OSDN Git Service

Merge "Disable avatar and contextual cards on low ram devices."
authorTreeHugger Robot <treehugger-gerrit@google.com>
Thu, 14 Mar 2019 16:59:59 +0000 (16:59 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Thu, 14 Mar 2019 16:59:59 +0000 (16:59 +0000)
src/com/android/settings/accounts/AvatarViewMixin.java
src/com/android/settings/homepage/SettingsHomepageActivity.java
tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java

index 3ce8c0a..9e762c7 100644 (file)
@@ -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<Bitmap> 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()) {
index 9e869a9..9b83f88 100644 (file)
@@ -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);
index 6a2348c..8c75e33 100644 (file)
@@ -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;
 
@@ -101,6 +103,19 @@ public class AvatarViewMixinTest {
     }
 
     @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 = {
                     BatteryFixSliceTest.ShadowBatteryStatsHelperLoader.class,