탭 중 하나가 채팅 유형 기능인 탭 위젯이 있습니다. 일정 간격으로 채팅 데이터를 업데이트하려고합니다 (채팅 탭의 활성 여부에 따라 달라질 수 있음).다른 활동 방법에서 활동 UI 업데이트 중?
내 기본 TabActivity 클래스에서 AsyncTask를 사용하는 것이 가장 좋았습니다. AsyncTask가 실행되는 동안 채팅 활동이 백그라운드에서 파괴되는 것을 피할 수 있었기 때문입니다. Activity가 파괴되고 다시 생성되지 않도록 보장하여 AsyncTask가 실제 활성 활동의 데이터를 수정할 수 없도록했습니다.
그러나 이제 내 AsyncTask가 TabActivity 활동에 포함되었으므로 내 채팅 목록 어댑터를 notifyDataSetChanged()
으로 직접 호출 할 수있는 방법이 없습니다. onPostExecute()
메서드를 더 이상 사용하지 마십시오. TabHost/TabActivity에서 주어진 Tab의 현재 Activity에 대한 참조를 가져 오는 방법이 있습니까?
또는, 채팅 활동이 TabActivity 활동의 하위 활동 (절대로 TabActivity가 활성화되어있는 동안 절대로 파괴되지 않음)로 파괴되지 않는다고 가정하고 채팅 활동에 AsyncTask를 넣을 수 있습니까? ?
이 수정 된 버전은 아름답게 작동했습니다. 내 채팅 활동에서 스레드를 생성하고 주기적 다운로드를 시작하는 해당 스레드에서 핸들러를 만듭니다. 다운로드가 성공적으로 끝나면'runOnUIThread()'내부에서 어댑터 데이터 셋을 업데이트합니다. 그런 다음 핸들러의'postDelayed()'메소드를 사용하여 다음 업데이트주기를 스케쥴한다. 그리고 내 활동이 파괴되면, 나는 내 업데이트 Runnable에'handler.removeCallback()'을 사용한다. 감사! – stormin986