2012-06-05 3 views
0

Может кто-нибудь скажет мне, когда мы будем использовать Looper в Handlers? У меня есть кодовая база, в которой есть несколько потоков и обработчиков. Но Looper.prepare() и Looper.loop() не вызываются для всех из них.Когда мы должны использовать Looper в Android?

Мое сомнение в том, что мы нуждаемся в петлере, чтобы непрерывно обрабатывать сообщения в методе handleMessage? Даже если у нас нет петлителя, не обрабатывается вызовMessage(), когда сообщение отправляется обработчику? Какая дополнительная цель здесь?

Спасибо, шамы

+0

http://stackoverflow.com/questions/7597742/android-what-is-the-purpose-of-looper-and-how-to-use-it –

+0

Возможный дубликат ... HTTP : //stackoverflow.com/questions/5193913/handlers-messagequeue-looper-do-they-all-run-on-the-ui-thread –

ответ

2

Класс используется для запуска цикла обработки сообщений для потока. Потоки по умолчанию не имеют связанного с ними цикла сообщений; чтобы создать один, вызовите prepare() в потоке, который должен запустить цикл, а затем loop(), чтобы обработать сообщения до тех пор, пока цикл не будет остановлен.

Большая часть взаимодействия с контуром сообщения осуществляется через класс Handler.

Ниже приведен способ выполнения резьбы

@Override 
    public void run() { 
     try { 
      // preparing a looper on current thread   
      // the current thread is being detected implicitly 
      Looper.prepare(); 

      Log.i(TAG, "DownloadThread entering the loop"); 

      // now, the handler will automatically bind to the 
      // Looper that is attached to the current thread 
      // You don't need to specify the Looper explicitly 
      handler = new Handler(); 

      // After the following line the thread will start 
      // running the message loop and will not normally 
      // exit the loop unless a problem happens or you 
      // quit() the looper (see below) 
      Looper.loop(); 

      Log.i(TAG, "DownloadThread exiting gracefully"); 
     } catch (Throwable t) { 
      Log.e(TAG, "DownloadThread halted due to an error", t); 
     } 
    } 
0

Android Лупер является классом Java, в пользовательском интерфейсе Android, что вместе с классом Handler для обработки событий пользовательского интерфейса, таких как кнопки щелчков, редро экрана и ориентации переключатели , Они также могут использоваться для загрузки контента в службу HTTP, изменения размера изображений и выполнения удаленных запросов.

http://developer.android.com/reference/android/os/Looper.html

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