gpt4 book ai didi

java - 从某些示例线程代码中获取 RuntimeException

转载 作者:行者123 更新时间:2023-12-01 15:07:36 28 4
gpt4 key购买 nike

我开始研究线程,我不明白为什么下面的简单代码不起作用。它正在抛出:

RuntimeException: can't create handler inside thread that has not called looper.prepare():

这是代码

public void onClick(View v) {
switch (v.getId()) {
case R.id.id1:
Thread th =new Thread(new Runnable() {
public void run() {
update();
delObjects();
addObjects();

}
});
th.start();
break;
}
}

我读到,有时当您尝试修改 UI 时会发生错误,但这不是我的情况。

提前致谢!

最佳答案

如果您没有访问 UI 内容,那么您很可能正在执行深度线程。基本上,您无法从已经线程化的 run() 方法之外启动线程。所以你的方法,

update();
delObjects();
addObjects();

可能正在使用线程并导致此问题。在大多数情况下,您不需要此类线程,因为您已经位于 UI 线程之外,因此您可以跳过这些函数内部的线程。在某些情况下,如果必须在没有运行包装器线程的其他地方使用这些函数,则您可能需要在方法本身中拥有线程。因此,如果是这种情况,请按如下所示更改代码。

public void onClick(View v) {

switch (v.getId()) {
case R.id.id1:
Thread th = new Thread(new Runnable() {
public void run() {
//Prepare for further threading.
Looper.prepare();

update();
delObjects();
addObjects();
}
});
th.start();
break;
}
}

希望有帮助。

关于java - 从某些示例线程代码中获取 RuntimeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765633/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com