我有一条简单的线索是这样的:
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();它是一个主要活动的内部类。这个线程,但是不是在主活动上运行,而是在内部运行在主活动上运行的另一个线程。
无论如何,这个示例与here完全相同,但出于某种原因,它给了我java.lang.RuntimeException:每个线程只能创建一个活套。
我没有创建任何其他的漏洞,至少在任何地方都是如此。
发布于 2014-06-09 07:30:12
java.lang.RuntimeException:每个线程只能创建一个活套
引发此异常是因为您(或核心Android代码)已经为当前正在执行的线程调用了Looper.prepare()。
下面检查当前线程是否已经存在活套,如果不存在,则会创建一个活套,从而避免RuntimeException。
public void run()
{
if (Looper.myLooper() == null)
{
Looper.prepare();
}
thisHandler = new Handler();
....
}发布于 2016-05-24 08:03:36
不只是调用Looper.prepare();,而是首先检查您的Thread是否已经存在Looper,如果不存在,则调用该函数。如下所示:
if (Looper.myLooper()==null)
Looper.prepare();https://stackoverflow.com/questions/23038682
复制相似问题