java.lang.RuntimeException: только один Looper может быть создан для потока

У меня есть простая тема, которая выглядит так:

public class AwesomeRunnable extends Thread {

    Handler thisHandler = null;
    Handler uihandler = null;
    String update = null;
    long time = 0;

    public AwesomeRunnable(Handler h, long howLong) {
        uihandler = h;
        time = howLong;
    }

    public void run() {
        Looper.prepare();
        thisHandler = new Handler();
  ...

РЕДАКТИРОВАТЬ: ДОБАВЛЕННЫЙ КОД, НАЧИНАЮЩИЙ ПУСК

public class StartCycle implements Runnable {

    @Override
    public void run() {

        pomodoroLeft = numPomodoro;
        while(pomodoroLeft > 0) {
            pomodoroLeft--;
            actualSeconds = 6 * ONE_SECOND;
            runnable = new AwesomeRunnable(myHandler, actualSeconds);
            runnable.start();
            waitForClock();

Это внутренний класс основной деятельности. Однако этот поток выполняется не в основном действии, а внутри другого потока, который выполняется в основном действии.

В любом случае, этот пример точно такой же, как здесь, но по какой-то причине он дает мне java.lang.RuntimeException: только один Looper может быть создан для потока.

Я не создавал никаких других петлителей, по крайней мере, где-либо явно.

2 ответа

Решение

java.lang.RuntimeException: только один Looper может быть создан для потока

Исключение выдается, потому что вы (или основной код Android) уже вызвали Looper.prepare() для текущего исполняющего потока.

Следующее проверяет, существует ли уже Looper для текущего потока, если нет, он создает его, тем самым избегая RuntimeException,

    public void run() 
    {
            if (Looper.myLooper() == null)
            {
              Looper.prepare();
            }
            thisHandler = new Handler();

         ....
    }

Вместо того, чтобы просто звонить Looper.prepare();, сначала проверьте, если Looper не существует для вашего Threadесли нет, вызовите эту функцию. Как это:

if (Looper.myLooper()==null)
    Looper.prepare();
Другие вопросы по тегам