diff --git a/java/com/android/dialer/precall/impl/AndroidManifest.xml b/java/com/android/dialer/precall/impl/AndroidManifest.xml
index d3d0f53..b960f6b 100644
--- a/java/com/android/dialer/precall/impl/AndroidManifest.xml
+++ b/java/com/android/dialer/precall/impl/AndroidManifest.xml
@@ -23,6 +23,7 @@
         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 144d94e..4d2e606 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -119,12 +119,12 @@
     PendingAction pendingAction = coordinator.startPendingAction();
     DialerExecutorComponent.get(coordinator.getActivity())
         .dialerExecutorFactory()
-        .createUiTaskBuilder(
-            activity.getFragmentManager(),
-            "PreferredAccountWorker",
-            new PreferredAccountWorker(phoneNumber))
+        .createNonUiTaskBuilder(new PreferredAccountWorker(phoneNumber))
         .onSuccess(
             (result -> {
+              if (isDiscarding) {
+                return;
+              }
               if (result.phoneAccountHandle.isPresent()) {
                 coordinator.getBuilder().setPhoneAccountHandle(result.phoneAccountHandle.get());
                 pendingAction.finish();
@@ -213,7 +213,9 @@
   @Override
   public void onDiscard() {
     isDiscarding = true;
-    selectPhoneAccountDialogFragment.dismiss();
+    if (selectPhoneAccountDialogFragment != null) {
+      selectPhoneAccountDialogFragment.dismiss();
+    }
   }
 
   private static class PreferredAccountWorkerResult {
@@ -353,11 +355,13 @@
                 new WritePreferredAccountWorkerInput(
                     coordinator.getActivity(), dataId, selectedAccountHandle));
       }
-      DialerExecutorComponent.get(coordinator.getActivity())
-          .dialerExecutorFactory()
-          .createNonUiTaskBuilder(new UserSelectionReporter(selectedAccountHandle, number))
-          .build()
-          .executeParallel(coordinator.getActivity());
+      if (number != null) {
+        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 938d31d..eadba2b 100644
--- a/java/com/android/dialer/precall/impl/PreCallActivity.java
+++ b/java/com/android/dialer/precall/impl/PreCallActivity.java
@@ -19,6 +19,7 @@
 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 {
@@ -30,6 +31,7 @@
     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 de32cc2..94ba90d 100644
--- a/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
+++ b/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
@@ -59,7 +59,6 @@
     } else {
       builder = Assert.isNotNull(intent.getParcelableExtra(EXTRA_CALL_INTENT_BUILDER));
     }
-    actions = PreCallComponent.get(activity).getPreCall().getActions();
   }
 
   void onRestoreInstanceState(Bundle savedInstanceState) {
@@ -68,6 +67,7 @@
   }
 
   void onResume() {
+    actions = PreCallComponent.get(activity).getPreCall().getActions();
     runNextAction();
   }
 
