【发布时间】:2014-04-17 18:42:52
【问题描述】:
我有一个线程:
public class KelvinThread implements Runnable {
private Handler mSoundHandler;
public KelvinThread() {
super();
mSoundHandler = new Handler();
}
private Runnable mSoundThread = new Runnable() {
public void run() {
// my treatment
}
};
@Override
public void run() {
while (true) {
// ....
mSoundHandler.postDelayed(mSoundThread, 2000);
// ....
}
}
这个线程“KelvinThread”是从另一个线程创建和启动的。
我有这个错误:
无法在未调用 Looper.prepare() 的线程内创建处理程序
当我的处理程序被分配时:mSoundHandler = new Handler();
谢谢你们的帮助!
【问题讨论】:
-
在七个地狱中,为什么要将 Handler 与本机线程混合使用?我认为这是一个非常丑陋的解决方案,您不应该这样做 - 这似乎是糟糕的应用程序逻辑设计。
-
其实不然。有时您必须这样做,例如从线程或其他情况下触发 UI 更改。真的取决于。
-
嗨拉格纳,我读了你的建议。但是没有 Handler 怎么做触发器呢?还有其他方法吗?
标签: android multithreading handler