제 프로그램에서 한 컴포넌트가 어떤식이냐면

리모트 서버에서 xml을 받아와서 그걸 리스트에 담은다음에 이 리스트를 리스트어댑터에 집어넣어서 출력하는 형식인데요...
일단 백그라운드 작업을 위해서

스레드 {
    서버에서 xml 받아서 List 오브젝트에 집어넣기
    핸들러 부름
}

핸들러 {
    현재 엑티비티의 리스트어댑터에다가 위에서 받은 리스트 오브젝트 세팅
}

이런식인데 일단은 작동은 원하는대로 잘 되거든요
그런데 이 리스트가 보여진 다음에 다른 액티비티를 불렀다가 다시 Back 버튼을 눌러서 여기로 되돌아오면
가끔 무작위 랜덤으로

java.lang.IllegalStateException:
The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your
adapter is not modified from a background thread, but only from the UI thread.

이런 에러가 뜨면서 강제종료가 되는데요
제가 이해하기로는 스레드에서 리스트를 받는게 아니라 리스트 오브젝트를 세팅하는 그 스레드 (UI)와 같은 스레드에서 리스트를 받으라는 소리인데.. 그러면 시간이 약간 소요되는 xml 받는 작업을 백그라운드에서 할수 있는 방법이 있나요?