diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
index 5a2e9ea..662485a 100644
--- a/src/com/android/contacts/CallDetailActivity.java
+++ b/src/com/android/contacts/CallDetailActivity.java
@@ -37,6 +37,7 @@
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.AsyncTask;
 import android.os.Bundle;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
@@ -222,7 +223,7 @@
                 values.put(Voicemails.IS_READ, true);
                 getContentResolver().update(voicemailUri, values, null, null);
             }
-        });
+        }, AsyncTask.THREAD_POOL_EXECUTOR);
     }
 
     /**
diff --git a/src/com/android/contacts/ContactsApplication.java b/src/com/android/contacts/ContactsApplication.java
index 1e791b6..0aba332 100644
--- a/src/com/android/contacts/ContactsApplication.java
+++ b/src/com/android/contacts/ContactsApplication.java
@@ -16,6 +16,8 @@
 
 package com.android.contacts;
 
+import static com.android.contacts.util.BackgroundTaskService.createAsyncTaskBackgroundTaskService;
+
 import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.test.InjectedServices;
 import com.android.contacts.util.BackgroundTaskService;
@@ -97,7 +99,7 @@
 
         if (BackgroundTaskService.BACKGROUND_TASK_SERVICE.equals(name)) {
             if (mBackgroundTaskService == null) {
-                mBackgroundTaskService = BackgroundTaskService.createBackgroundTaskService();
+                mBackgroundTaskService = createAsyncTaskBackgroundTaskService();
             }
             return mBackgroundTaskService;
         }
diff --git a/src/com/android/contacts/util/BackgroundTaskService.java b/src/com/android/contacts/util/BackgroundTaskService.java
index 00f9e3e..310a178 100644
--- a/src/com/android/contacts/util/BackgroundTaskService.java
+++ b/src/com/android/contacts/util/BackgroundTaskService.java
@@ -18,25 +18,54 @@
 
 import android.os.AsyncTask;
 
+import java.util.concurrent.Executor;
+
 /**
  * Service used to submit tasks to run in the background.
  * <p>
  * BackgroundTaskService makes the same memory-visibility guarantees that AsyncTask which it
  * emulates makes, namely that fields set in the {@link BackgroundTask#doInBackground()} method
  * will be visible to the {@link BackgroundTask#onPostExecute()} method.
+ * <p>
+ * You are not expected to derive from this class unless you are writing your own test
+ * implementation, or you are absolutely sure that the instance in
+ * {@link #createAsyncTaskBackgroundTaskService()} doesn't do what you need.
  */
 public abstract class BackgroundTaskService {
     public static final String BACKGROUND_TASK_SERVICE = BackgroundTaskService.class.getName();
 
+    /**
+     * Executes the given BackgroundTask with the default Executor.
+     * <p>
+     * All {@link BackgroundTask#doInBackground()} tasks will be guaranteed to happen serially.
+     * If this is not what you want, see {@link #submit(BackgroundTask, Executor)}.
+     */
     public abstract void submit(BackgroundTask task);
 
-    public static BackgroundTaskService createBackgroundTaskService() {
+    /**
+     * Executes the BackgroundTask with the supplied Executor.
+     * <p>
+     * The main use-case for this method will be to allow submitted tasks to perform their
+     * {@link BackgroundTask#doInBackground()} methods concurrently.
+     */
+    public abstract void submit(BackgroundTask task, Executor executor);
+
+    /**
+     * Creates a concrete BackgroundTaskService whose default Executor is
+     * {@link AsyncTask#SERIAL_EXECUTOR}.
+     */
+    public static BackgroundTaskService createAsyncTaskBackgroundTaskService() {
         return new AsyncTaskBackgroundTaskService();
     }
 
     private static final class AsyncTaskBackgroundTaskService extends BackgroundTaskService {
         @Override
-        public void submit(final BackgroundTask task) {
+        public void submit(BackgroundTask task) {
+            submit(task, AsyncTask.SERIAL_EXECUTOR);
+        }
+
+        @Override
+        public void submit(final BackgroundTask task, Executor executor) {
             new AsyncTask<Void, Void, Void>() {
                 @Override
                 protected Void doInBackground(Void... params) {
@@ -48,7 +77,7 @@
                 protected void onPostExecute(Void result) {
                     task.onPostExecute();
                 }
-            }.execute();
+            }.executeOnExecutor(executor);
         }
     }
 }
diff --git a/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
index e901fab..494888c 100644
--- a/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
@@ -27,6 +27,7 @@
 import android.content.Context;
 import android.media.MediaPlayer;
 import android.net.Uri;
+import android.os.AsyncTask;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.SeekBar;
@@ -165,7 +166,7 @@
                     mView.playbackError(mException);
                 }
             }
-        });
+        }, AsyncTask.THREAD_POOL_EXECUTOR);
     }
 
     private void postSuccessfulPrepareActions() {
