gpt4 book ai didi

java - 无法在未调用 Looper.prepare() : java. lang.RuntimeException 的线程内创建处理程序

转载 作者:行者123 更新时间:2023-11-30 03:16:42 25 4
gpt4 key购买 nike

我有以下代码在另一个线程中运行一个函数:

Button buttonb = (Button) this.findViewById(R.id.buttonb);
buttonb.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {


progressBar.setVisibility(View.VISIBLE);

Thread thread = new Thread() {
@Override
public void run() {
matrixOperation(sourcePhoto);
}
};
thread.start();

progressBar.setVisibility(View.INVISIBLE);


}
});

但是在运行时我得到了这个错误:

Can't create handler inside thread that has not called Looper.prepare()

我搜索并发现导致此错误的原因之一是“您无法从后台线程执行 AsyncTask。请参阅“但这不是后台线程,我是从我的主 Activity 中调用它的”的“线程规则”部分。

请告诉我如何解决这个问题。

最佳答案

Handler 类使用 Looper 来执行其调度,而刚刚创建的线程没有关联的循环器——因此会出现错误。

由于您没有提供处理程序创建代码,我假设您想在主线程上调用代码。在这种情况下,按如下方式创建 Handler:

Handler handler = new Handler(Looper.getMainLooper());

计划在该 Handler 上运行的任何内容都将在主 Looper 上执行,后者在主线程上运行。

关于java - 无法在未调用 Looper.prepare() : java. lang.RuntimeException 的线程内创建处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19965358/

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