我有一个简单的线程是这样的:
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();
它是主要 Activity 的内部类。 此线程,但是不在主 Activity 上运行,而是在另一个在主 Activity 上运行的线程内.
不管怎样,这个例子一模一样和here一样,但由于某种原因,它给了我 java.lang.RuntimeException: Only one Looper may be created per thread.
我没有创建任何其他 Looper,至少在任何地方都明确表示。
最佳答案
java.lang.RuntimeException: Only one Looper may be created per thread
抛出异常是因为您(或核心 Android 代码)已经为当前正在执行的线程调用了 Looper.prepare()
。
下面检查当前线程是否已经存在一个Looper,如果没有就创建一个,从而避免RuntimeException
。
public void run()
{
if (Looper.myLooper() == null)
{
Looper.prepare();
}
thisHandler = new Handler();
....
}
关于java.lang.RuntimeException : Only one Looper may be created per thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038682/