Fix brief flash when making a call from search

Perform the fragment transaction to hide search in onPause.
This prevents the brief flash that shows up in the time between
pausing the activity and starting the in-call UI, but also
ensures that we execute the transaction before onSaveInstance is called
to prevent b/10953115.

Bug: 10780429
Change-Id: I85b4c7e6719acede845d604087344401edc9ef3d
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 12a0f2b..42cbbf4 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -147,6 +147,7 @@
 
     private boolean mInDialpadSearch;
     private boolean mInRegularSearch;
+    private boolean mClearSearchOnPause;
 
     /**
      * True if the dialpad is only temporarily showing due to being in call
@@ -192,14 +193,14 @@
                     // CallLog screen (search UI will be automatically exited).
                     PhoneNumberInteraction.startInteractionForPhoneCall(
                         DialtactsActivity.this, dataUri, getCallOrigin());
-                    hideDialpadAndSearchUi();
+                    mClearSearchOnPause = true;
                 }
 
                 @Override
                 public void onCallNumberDirectly(String phoneNumber) {
                     Intent intent = CallUtil.getCallIntent(phoneNumber, getCallOrigin());
                     startActivity(intent);
-                    hideDialpadAndSearchUi();
+                    mClearSearchOnPause = true;
                 }
 
                 @Override
@@ -329,6 +330,15 @@
     }
 
     @Override
+    protected void onPause() {
+        if (mClearSearchOnPause) {
+            hideDialpadAndSearchUi();
+            mClearSearchOnPause = false;
+        }
+        super.onPause();
+    }
+
+    @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putString(KEY_SEARCH_QUERY, mSearchQuery);