Как вызвать 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
нет