Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android handleMessage只有创建视图层次结构的原始线程才能接触其视图_Android_Multithreading - Fatal编程技术网

Android handleMessage只有创建视图层次结构的原始线程才能接触其视图

Android handleMessage只有创建视图层次结构的原始线程才能接触其视图,android,multithreading,Android,Multithreading,我无法重现这个问题,但我收到了一些错误报告 异常android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图 样品 SampleActivity extends Activity{ private Messenger callBackMessenger = new Messenger(new CallBackHandler(this)); } private static class

我无法重现这个问题,但我收到了一些错误报告

异常android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图

样品

 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中