【发布时间】:2017-04-28 13:00:04
【问题描述】:
我无法重现此问题,但我收到了一些错误报告
异常 android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触其视图。
样本
SampleActivity extends Activity{
private Messenger callBackMessenger = new Messenger(new CallBackHandler(this));
}
private static class CallBackHandler extends Handler {
public CallBackHandler(SampleActivity activity) {
context = new WeakReference<>(activity);
}
@Override
public void handleMessage(Message msg) {
TestActivity a = context.get();
if(a!=null){
a.textView.setText("text"); <<crash
}
}
来自 onStart 和 onStop 的绑定和取消绑定调用
handleMessage 应该在 UI 中处理(如果在 UI 中创建)。我想纠正错误行为的原因。 runOnUiThread 是解决方法。
【问题讨论】:
-
发布您的相关代码。需要更多信息以了解问题所在
-
@Raghunandan 我不明白为什么 handleMessage(在 UI-Th 中创建的处理程序)在非 UI 线程中处理。抱歉,我无法输入所有代码。
-
查看代码并没有提示我们在 ui 线程或后台线程上运行的内容。抱歉,我无法提供更多帮助