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(); ... 

编辑:新的代码,启动了RUNNABLE

 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。

我没有创建任何其他的loopers,至少在任何地方都没有。

Related of "java.lang.RuntimeException:每个线程只能创建一个Looper"

java.lang.RuntimeException:每个线程只能创建一个Looper

抛出exception是因为您(或核心Android代码)已经为当前正在执行的线程调用了Looper.prepare()

下面检查当前线程是否已经存在Looper,如果没有,则创建一个,从而避免RuntimeException

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

Looper.prepare();只是调用Looper.prepare(); ,首先检查你的Thread是否已经存在Looper ,如果没有,则调用该函数。 喜欢这个:

 if (Looper.myLooper()==null) Looper.prepare();