diff --git a/src/com/android/contacts/ContactPhotoManager.java b/src/com/android/contacts/ContactPhotoManager.java
index cb0dc78..35585a6 100644
--- a/src/com/android/contacts/ContactPhotoManager.java
+++ b/src/com/android/contacts/ContactPhotoManager.java
@@ -255,6 +255,11 @@
     private final LruCache<Object, BitmapHolder> mBitmapHolderCache;
 
     /**
+     * {@code true} if ALL entries in {@link #mBitmapHolderCache} are NOT fresh.
+     */
+    private volatile boolean mBitmapHolderCacheAllUnfresh = true;
+
+    /**
      * Cache size threshold at which bitmaps will not be preloaded.
      */
     private final int mBitmapHolderCacheRedZoneBytes;
@@ -460,7 +465,12 @@
 
     @Override
     public void refreshCache() {
+        if (mBitmapHolderCacheAllUnfresh) {
+            if (DEBUG) Log.d(TAG, "refreshCache -- no fresh entries.");
+            return;
+        }
         if (DEBUG) Log.d(TAG, "refreshCache");
+        mBitmapHolderCacheAllUnfresh = true;
         for (BitmapHolder holder : mBitmapHolderCache.snapshot().values()) {
             holder.fresh = false;
         }
@@ -666,7 +676,6 @@
             Log.d(TAG, "Caching data: key=" + key + ", " + btk(bytes.length));
         }
         BitmapHolder holder = new BitmapHolder(bytes);
-        holder.fresh = true;
 
         // Unless this image is being preloaded, decode it right away while
         // we are still on the background thread.
@@ -675,6 +684,7 @@
         }
 
         mBitmapHolderCache.put(key, holder);
+        mBitmapHolderCacheAllUnfresh = false;
     }
 
     @Override
@@ -682,6 +692,7 @@
         Request request = Request.createFromUri(photoUri, true, false, DEFAULT_AVATAR);
         BitmapHolder holder = new BitmapHolder(photoBytes);
         mBitmapHolderCache.put(request.getKey(), holder);
+        mBitmapHolderCacheAllUnfresh = false;
         mBitmapCache.put(request.getKey(), bitmap);
     }
 
