diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index 19997eb..15afa90 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -183,16 +183,8 @@
 
     @After
     public void verifyLauncherState() {
-        try {
-            // Limits UI tests affecting tests running after them.
-            mLauncher.waitForLauncherInitialized();
-        } catch (Throwable t) {
-            Log.e(TAG,
-                    "Couldn't deinit after a test, exiting tests, see logs for failures that "
-                            + "could have caused this",
-                    t);
-            exit(1);
-        }
+        // Limits UI tests affecting tests running after them.
+        mLauncher.waitForLauncherInitialized();
     }
 
     protected void clearLauncherData() throws IOException, InterruptedException {
diff --git a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
index cdda0f0..7763cc2 100644
--- a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
+++ b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
@@ -8,6 +8,7 @@
 
 import org.junit.rules.TestWatcher;
 import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -15,6 +16,7 @@
 
 public class FailureWatcher extends TestWatcher {
     private static final String TAG = "FailureWatcher";
+    private static boolean sHadFailedTestDeinitialization;
     final private UiDevice mDevice;
 
     public FailureWatcher(UiDevice device) {
@@ -60,4 +62,31 @@
 
         device.takeScreenshot(new File(pathname));
     }
+
+    @Override
+    public Statement apply(Statement base, Description description) {
+        return new Statement() {
+
+            @Override
+            public void evaluate() throws Throwable {
+                if (sHadFailedTestDeinitialization) {
+                    Log.d(TAG, "Skipping due to a recent test deinitialization failure: " +
+                            description.getDisplayName());
+                    return;
+                }
+
+                try {
+                    base.evaluate();
+                } catch (Throwable e) {
+                    if (!Log.getStackTraceString(e).contains(
+                            "androidx.test.internal.runner.junit4.statement.RunBefores.evaluate")) {
+                        // Test failed to deinitialize. Since the global state is probably
+                        // corrupted, won't execute other tests.
+                        sHadFailedTestDeinitialization = true;
+                    }
+                    throw e;
+                }
+            }
+        };
+    }
 }
