2014-12-04 3 views
3

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

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 и класс резьбы не имеет getLooper() метод; но основной поток Android. Можно ли получить доступ к главной теме как HandlerThread?

ответ

2

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

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

Может Основные темы быть доступны как HandlerThread

No

Смежные вопросы