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 {