Как вызвать getLooper() в основном потоке?

В Android, главная тема и HandlerThread имеет Looper & MessageQueue по умолчанию. Я могу вызвать getLooper() для объекта handlerThread, но почему бы не в основном потоке?

HandlerThread ht = new HandlerThread();
Looper htLooper = ht.getLooper();      // Works fine

Thread mainThread = Looper.getMainLooper().getThread();
Looper mainLooper = mainThread.getLooper();    // getLooper() doesn't compile.

В реальном сценарии никогда не нужно использовать getLooper() на mainThread; мы можем просто позвонить Looper.getMainLooper(), Я просто хотел бы знать, почему это не работает.

Я понимаю это с точки зрения Java, что Looper.getMainLooper().getThread() возвращает java.lang.Threadи класс Thread не имеет метода getLooper(); но основной поток Android делает. Можно ли получить доступ к основной теме как HandlerThread?

1 ответ

Решение

Если вы посмотрите на исходный код, то увидите, что поток внутри петлителя не имеет типа HandlerThread:

60       final Thread mThread;
...
188      mThread = Thread.currentThread();

Может ли основной поток быть доступен как HandlerThread

нет

Другие вопросы по тегам