Fix brief flash when clicking on a search result to dial

Delay the hiding of the search fragment so that the in-call ui has time
to show up.

Bug: 10780429
Change-Id: I0f44bbb10e221ad4480ed1acf6225e6d6b6411ce
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 4c747c9..05c9e2c 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -29,6 +29,8 @@
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.provider.CallLog.Calls;
@@ -165,6 +167,21 @@
 
     private DialerDatabaseHelper mDialerDatabaseHelper;
 
+    private static final int EVENT_DELAYED_HIDE_SEARCH = 1;
+
+    // Wait this much time (in ms) before hiding the search fragment after clicking on
+    // a search result to dial, to avoid jank
+    private static final int CLEAR_SEARCH_DELAY = 500;
+
+    final Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == EVENT_DELAYED_HIDE_SEARCH) {
+                hideDialpadAndSearchUi();
+            }
+        }
+    };
+
     /**
      * Listener used when one of phone numbers in search UI is selected. This will initiate a
      * phone call using the phone number.
@@ -177,14 +194,16 @@
                     // CallLog screen (search UI will be automatically exited).
                     PhoneNumberInteraction.startInteractionForPhoneCall(
                         DialtactsActivity.this, dataUri, getCallOrigin());
-                    hideDialpadAndSearchUi();
+                    mHandler.sendEmptyMessageDelayed(EVENT_DELAYED_HIDE_SEARCH,
+                            CLEAR_SEARCH_DELAY);
                 }
 
                 @Override
                 public void onCallNumberDirectly(String phoneNumber) {
                     Intent intent = CallUtil.getCallIntent(phoneNumber, getCallOrigin());
                     startActivity(intent);
-                    hideDialpadAndSearchUi();
+                    mHandler.sendEmptyMessageDelayed(EVENT_DELAYED_HIDE_SEARCH,
+                            CLEAR_SEARCH_DELAY);
                 }
 
                 @Override