Make sure the next case started after previous case finished

Previous test case "getActivity().finish()" may be scheduled after
the start of current case. In this case, there will be no layer for
this case to draw its UI as its acitivity finished as the previous
test case's teardown.

Change-Id: Ifb4dfaa8817c99268e7f8b1d359fabf08a01c552
Signed-off-by: guoyin.chen <guoyin.chen@freescale.com>
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java
index 783e710..ee15da0 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java
@@ -27,6 +27,7 @@
 import android.uirendering.cts.util.BitmapDumper;
 import android.util.Log;
 
+import java.util.concurrent.Semaphore;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -87,6 +88,7 @@
      */
     @Override
     public void tearDown() {
+        final Semaphore available = new Semaphore(0, true);
         if (mTestCaseBuilder != null) {
             List<TestCase> testCases = mTestCaseBuilder.getTestCases();
 
@@ -109,10 +111,17 @@
             @Override
             public void run() {
                 getActivity().finish();
+                available.release();
             }
         };
 
         getActivity().runOnUiThread(finishRunnable);
+        // Make sure to start case only after the previous one finished
+        try {
+            available.acquire();
+        } catch (InterruptedException exception) {
+            exception.printStackTrace();
+        }
     }
 
     public Bitmap takeScreenshot() {