diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index 1dd8524..5af9b95 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -111,6 +111,8 @@
 import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.LoggingBindings;
+import com.android.dialer.logging.LoggingBindingsFactory;
 import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.logging.UiAction;
 import com.android.dialer.main.Main;
@@ -589,6 +591,16 @@
         LogUtil.i("DialtactsActivity.onResume", "clearing all new voicemails");
         CallLogNotificationsService.markAllNewVoicemailsAsOld(this);
       }
+      // add 1 sec delay to get memory snapshot so that dialer wont react slowly on resume.
+      ThreadUtil.postDelayedOnUiThread(
+          () -> {
+            if (getApplicationContext() instanceof LoggingBindingsFactory) {
+              ((LoggingBindingsFactory) getApplicationContext())
+                  .newLoggingBindings()
+                  .logRecordMemory(LoggingBindings.ACTIVITY_ON_RESUME_MEMORY_EVENT_NAME);
+            }
+          },
+          1000);
     }
 
     mFirstLaunch = false;
diff --git a/java/com/android/dialer/logging/LoggingBindings.java b/java/com/android/dialer/logging/LoggingBindings.java
index e4de420..b70c600 100644
--- a/java/com/android/dialer/logging/LoggingBindings.java
+++ b/java/com/android/dialer/logging/LoggingBindings.java
@@ -26,6 +26,8 @@
       "CallList.onCallAdded_To_InCallActivity.onCreate_Incoming";
   String ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_OUTGOING =
       "CallList.onCallAdded_To_InCallActivity.onCreate_Outgoing";
+  String ACTIVITY_ON_RESUME_MEMORY_EVENT_NAME = "GoogleDialtactsActivity.onResume";
+  String INCALL_ACTIVITY_ON_RESUME_MEMORY_EVENT_NAME = "IncallActivity.OnResume";
   /**
    * Logs an DialerImpression event that's not associated with a specific call.
    *
@@ -99,4 +101,7 @@
 
   /** Log end a latency timer */
   void logStopLatencyTimer(String timerEventName);
+
+  /** Log get a memory snapshot */
+  void logRecordMemory(String memoryEventName);
 }
diff --git a/java/com/android/dialer/logging/LoggingBindingsStub.java b/java/com/android/dialer/logging/LoggingBindingsStub.java
index ab6872c..74ac294 100644
--- a/java/com/android/dialer/logging/LoggingBindingsStub.java
+++ b/java/com/android/dialer/logging/LoggingBindingsStub.java
@@ -67,4 +67,7 @@
 
   @Override
   public void logStopLatencyTimer(String timerEventName) {}
+
+  @Override
+  public void logRecordMemory(String memoryEventName) {}
 }
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index c509e48..34ffdf5 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -36,6 +36,7 @@
 import android.view.View;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.ThreadUtil;
 import com.android.dialer.compat.ActivityCompat;
 import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.logging.DialerImpression;
@@ -196,6 +197,16 @@
     pseudoScreenState.addListener(this);
     onPseudoScreenStateChanged(pseudoScreenState.isOn());
     Trace.endSection();
+    // add 1 sec delay to get memory snapshot so that dialer wont react slowly on resume.
+    ThreadUtil.postDelayedOnUiThread(
+        () -> {
+          if (getApplicationContext() instanceof LoggingBindingsFactory) {
+            ((LoggingBindingsFactory) getApplicationContext())
+                .newLoggingBindings()
+                .logRecordMemory(LoggingBindings.INCALL_ACTIVITY_ON_RESUME_MEMORY_EVENT_NAME);
+          }
+        },
+        1000);
   }
 
   /** onPause is guaranteed to be called when the InCallActivity goes in the background. */
