Android: только один лупер может быть создан на поток - PullRequest
6 голосов
/ 08 октября 2010

У меня проблема с Android-петлителем. У меня есть класс, который расширил AsynTask. Внутри метода doInBackground () у меня есть Looper.prepare () и немного кода ниже.

Он работает хорошо и хорошо в первый раз, но после этого он дает исключение «Для одного потока может быть создан только один лупер».

Кажется, есть какое-то решение использовать Looper.quit (), но я не могу его реализовать.

Любая помощь будет оценена.

Ответы [ 4 ]

3 голосов
/ 14 декабря 2011
class LooperThread extends Thread {
      public Handler mHandler;

      public void run() {
          Looper.prepare();

          mHandler = new Handler() {
              public void handleMessage(Message msg) {
                  // process incoming messages here
              }
          };

          Looper.loop();
      }
  }
0 голосов
/ 01 сентября 2015

Просто добавьте следующую проверку.

 if (Looper.myLooper() == null)
     Looper.prepare();
0 голосов
/ 15 января 2013
getActivity().runOnUiThread (new Thread(new Runnable() { 
    public void run() {
        Looper.myLooper();
        getActivity().invalidateOptionsMenu();
    }
}));
0 голосов
/ 16 июня 2011

Try ...

Looper.getMainLooper().quit();
...