Android handleMessage只有创建视图层次结构的原始线程才能接触其视图
我无法重现这个问题,但我收到了一些错误报告 异常android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图 样品Android handleMessage只有创建视图层次结构的原始线程才能接触其视图,android,multithreading,Android,Multithreading,我无法重现这个问题,但我收到了一些错误报告 异常android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图 样品 SampleActivity extends Activity{ private Messenger callBackMessenger = new Messenger(new CallBackHandler(this)); } private static class
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
}
}
SampleActivity扩展活动{
private Messenger callBackMessenger=new Messenger(new CallBackHandler(this));
}
私有静态类CallBackHandler扩展了处理程序{
公共回调处理程序(SampleActivity活动){
上下文=新的WeakReference(活动);
}
@凌驾
公共无效handleMessage(消息消息消息){
TestActivity a=context.get();
如果(a!=null){
a、 textView.setText(“text”);将a.uodateUI放入runOnUiThread
公共回调处理程序(TestActivity活动){
上下文=新的WeakReference(活动);
}
@Override
public void handleMessage(Message msg) {
TestActivity a = context.get();
if(a!=null){
a.runOnUiThread(new Runnable () {
public void run() {
a.updateUI(); <<crash
}
}) ;
}
}
@覆盖
公共无效handleMessage(消息消息消息){
TestActivity a=context.get();
如果(a!=null){
a、 runOnUiThread(新的可运行(){
公开募捐{
a、 updateUI();发布您的相关代码。需要更多信息以了解内容wrong@Raghunandan我不明白为什么handleMessage(在UI Th中创建的处理程序)在非UI线程中处理。很抱歉,我无法放置所有代码。查看代码不会给我们提示在UI线程或后台线程上运行的内容。很抱歉,我无法帮助您进一步了解。handleMessage应该在UI中处理。我想更正错误行为的原因。RunnuiThread是一种解决方法。不,它在后台运行,无法启动后台的日期Ui。它在后台运行,但应该在Ui中