我有一个简单的线程,像这样:
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: Only one Looper may be created per thread。
我没有在任何地方显式地创建任何其他looper。
AwesomeRunnable
的代码吗? - faddenadb logcat -v threadtime
来显示每行的线程ID)。一些东西一定在同一个线程中创建了两个looper,所以你需要弄清楚它是否在错误的线程中运行,或者在新线程中多次运行。 - faddenLooper.prepare();
抛出了异常。好的...我会尝试按照您建议的方式查看日志输出。 - user3081519