diff --git a/java/com/android/dialer/precall/impl/AndroidManifest.xml b/java/com/android/dialer/precall/impl/AndroidManifest.xml
index b960f6b..d3d0f53 100644
--- a/java/com/android/dialer/precall/impl/AndroidManifest.xml
+++ b/java/com/android/dialer/precall/impl/AndroidManifest.xml
@@ -23,7 +23,6 @@
         android:name="com.android.dialer.precall.impl.PreCallActivity"
         android:excludeFromRecents="true"
         android:noHistory="true"
-        android:showWhenLocked="true"
         android:theme="@style/Theme.PreCall.DialogHolder">
     </activity>
   </application>
diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index 8d3df23..4308df7 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -127,12 +127,12 @@
     PendingAction pendingAction = coordinator.startPendingAction();
     DialerExecutorComponent.get(coordinator.getActivity())
         .dialerExecutorFactory()
-        .createNonUiTaskBuilder(new PreferredAccountWorker(phoneNumber))
+        .createUiTaskBuilder(
+            activity.getFragmentManager(),
+            "PreferredAccountWorker",
+            new PreferredAccountWorker(phoneNumber))
         .onSuccess(
             (result -> {
-              if (isDiscarding) {
-                return;
-              }
               if (result.phoneAccountHandle.isPresent()) {
                 coordinator.getBuilder().setPhoneAccountHandle(result.phoneAccountHandle.get());
                 pendingAction.finish();
@@ -221,9 +221,7 @@
   @Override
   public void onDiscard() {
     isDiscarding = true;
-    if (selectPhoneAccountDialogFragment != null) {
-      selectPhoneAccountDialogFragment.dismiss();
-    }
+    selectPhoneAccountDialogFragment.dismiss();
   }
 
   private static class PreferredAccountWorkerResult {
@@ -366,13 +364,11 @@
                 new WritePreferredAccountWorkerInput(
                     coordinator.getActivity(), dataId, selectedAccountHandle));
       }
-      if (number != null) {
-        DialerExecutorComponent.get(coordinator.getActivity())
-            .dialerExecutorFactory()
-            .createNonUiTaskBuilder(new UserSelectionReporter(selectedAccountHandle, number))
-            .build()
-            .executeParallel(coordinator.getActivity());
-      }
+      DialerExecutorComponent.get(coordinator.getActivity())
+          .dialerExecutorFactory()
+          .createNonUiTaskBuilder(new UserSelectionReporter(selectedAccountHandle, number))
+          .build()
+          .executeParallel(coordinator.getActivity());
       listener.finish();
     }
 
diff --git a/java/com/android/dialer/precall/impl/PreCallActivity.java b/java/com/android/dialer/precall/impl/PreCallActivity.java
index eadba2b..938d31d 100644
--- a/java/com/android/dialer/precall/impl/PreCallActivity.java
+++ b/java/com/android/dialer/precall/impl/PreCallActivity.java
@@ -19,7 +19,6 @@
 import android.app.Activity;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
-import android.view.WindowManager.LayoutParams;
 
 /** A transparent activity to host dialogs for {@link PreCallCoordinatorImpl} */
 public class PreCallActivity extends Activity {
@@ -31,7 +30,6 @@
     super.onCreate(savedInstanceState);
     preCallCoordinator = new PreCallCoordinatorImpl(this);
     preCallCoordinator.onCreate(getIntent(), savedInstanceState);
-    getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
   }
 
   @Override
diff --git a/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java b/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
index 94ba90d..de32cc2 100644
--- a/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
+++ b/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
@@ -59,6 +59,7 @@
     } else {
       builder = Assert.isNotNull(intent.getParcelableExtra(EXTRA_CALL_INTENT_BUILDER));
     }
+    actions = PreCallComponent.get(activity).getPreCall().getActions();
   }
 
   void onRestoreInstanceState(Bundle savedInstanceState) {
@@ -67,7 +68,6 @@
   }
 
   void onResume() {
-    actions = PreCallComponent.get(activity).getPreCall().getActions();
     runNextAction();
   }
 
