Java 从错误线程调用异常

Java 从错误线程调用异常,java,android,multithreading,Java,Android,Multithreading,我有创建线程与服务器通信的活动。此线程每隔几秒钟接收一个字符串。我想将此字符串添加到活动(在ListView中)中的列表和显示中,但在尝试这样做时,我被调用为FromErrorThreadException class MyActivity() extends AppCompatActivity { ArrayList<String> list; ArrayAdapter<String> adapter; public MyActivity()

我有创建线程与服务器通信的活动。此线程每隔几秒钟接收一个字符串。我想将此字符串添加到活动(在ListView中)中的列表和显示中,但在尝试这样做时,我被调用为FromErrorThreadException

class MyActivity() extends AppCompatActivity {

    ArrayList<String> list;
    ArrayAdapter<String> adapter;

    public MyActivity(){

        ...

        setContentView(R.layout.main);

        list = new ArrayList<>();
        ListView myList = (ListView) findViewById(R.id.my_list);
        adapter = new ArrayAdapter<>(this, R.layout.list_element, list);

        myList.setAdapter(adapter);

        Thread thread = new Thread(new Runnable(){
            @Override
            public void run(){

                while(true){
                        String dataFromServer = networkManager.receiveData();
                        list.add(dataFromServer);
                        adapter.notifyDataSetChanged();
                }
            }
        });
    }
}
class MyActivity()扩展了AppActivity{
数组列表;
阵列适配器;
公共活动(){
...
setContentView(R.layout.main);
列表=新的ArrayList();
ListView myList=(ListView)findViewById(R.id.my_列表);
适配器=新阵列适配器(此,R.layout.list\u元素,list);
myList.setAdapter(适配器);
Thread Thread=新线程(new Runnable(){
@凌驾
公开募捐{
while(true){
字符串dataFromServer=networkManager.receiveData();
添加(dataFromServer);
adapter.notifyDataSetChanged();
}
}
});
}
}

我怎样才能解决这个问题

在操作列表之前切换回UI线程

      list.post (new Runnable()
      {
        @Override public void run() 
        {
          String dataFromServer = networkManager.receiveData();
          list.add(dataFromServer);
          adapter.notifyDataSetChanged();
        }
      });

如果您想在UI线程中使用异步操作,我建议您使用。只需将线程执行包装在扩展AsyncTask的类中

我无法更新工作线程内的主(UI)线程。您可以使用asycktask并更新asynctask的UI onPostExecute()方法