gpt4 book ai didi

android - 无法使用 Handler 解决 CalledFromWrongThreadException

转载 作者:搜寻专家 更新时间:2023-11-01 09:18:26 24 4
gpt4 key购买 nike

我会尽量保持简单:

在我的主要 Activity 中,我创建了一个处理程序:

public class ARViewer extends ARDisplayActivity {

public final MHandler mHandler = new MHandler(this);

public void onCreate(Bundle savedInstanceState) {
...

MHandler类:

public final class MHandler extends Handler{

//main activity
private ARViewer arnv;

public MHandler(ARViewer arnv){
this.arnv = arnv;
}

@Override
public void handleMessage(Message msg) {
...
case H_RR :
arnv.setContentView(R.layout.routeplanner);
break;
...
super.handleMessage(msg);
}
}

但是如果我从另一个类中的回调函数调用 handleMessage 方法,肯定是从另一个线程中调用,我仍然会收到异常消息:CalledFromWrongThreadException(只有创建 View 层次结构的原始线程可以触及它的 View ):

public void rFound(Route route) {
Message msg = new Message();
msg.what = MHandler.H_RR;
ARViewer.arnv.mHandler.handleMessage(msg);
}

最佳答案

您不需要引用那里的 Activity 。在你做 UI 的地方创建新的可运行的。然后做 mHandler.post(myUIRunnable);示例在这里: http://developer.android.com/guide/appendix/faq/commontasks.html#threading

关于android - 无法使用 Handler 解决 CalledFromWrongThreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2818920/

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