change testLoop to create its own Looper in a separate thread

- quitting can make native part of message Q of the Looper gone,
  and Looper cannot be used for remaining tests

bug: 9057207
Change-Id: Icf95c92b8855c5d3b49f48824c5d1acdd07cbcab
diff --git a/tests/tests/os/src/android/os/cts/LooperTest.java b/tests/tests/os/src/android/os/cts/LooperTest.java
index 326caa3..6631599 100644
--- a/tests/tests/os/src/android/os/cts/LooperTest.java
+++ b/tests/tests/os/src/android/os/cts/LooperTest.java
@@ -46,16 +46,23 @@
         assertNotNull(looper);
     }
 
-    public void testLoop() {
-        MockRunnable run = new MockRunnable();
+    public void testLoop() throws Throwable {
+        Thread t = new Thread(new Runnable() {
+            public void run() {
+                Looper.prepare();
 
-        Handler handler = new Handler();
-        Message msg = Message.obtain(handler, run);
-        handler.sendMessageAtTime(msg, 0);
-        assertFalse(run.runCalled);
-        Looper.loop();
+                MockRunnable run = new MockRunnable();
 
-        assertTrue(run.runCalled);
+                Handler handler = new Handler();
+                Message msg = Message.obtain(handler, run);
+                handler.sendMessageAtTime(msg, 0);
+                assertFalse(run.runCalled);
+                Looper.loop();
+                assertTrue(run.runCalled);
+            }
+        });
+        t.start();
+        t.join();
     }
 
     public void testMyLooper() throws Throwable {