이 질문은 스택 오버플로를 통한 이전 질문의 연속입니다. how-to-download-images-asynchronously-from-web-server. 블랙 베리에 비동기식 목록을 만들기 위해 고심하고 있습니다. 이제는 나를 위해 잘 작동합니다. 그러나 그것은 나에게 또 다른 문제를주고있다.Blackery의 비동기 목록 필드 구현 중에 IllegalThreadState 예외가 발생했습니다.
나는 지금까지
- 가 5 스레드 풀 크기를 제한
- 목록이
- 이
RunnableFactory
을 만든 기본 미리로드 된 XML 피드에서 값을 복용 목록보기를 만든 이렇게 한 무엇 그 다음에 실행 파일을 추가합니다. Runnable 객체는 서버에서 이미지를 다운로드 할 수 있습니다. - 이제 목록은 완벽하게 비동기 적으로로드됩니다.
문제 시나리오 목록 화면는 RunnableFactory
다음 시작 다운로드를 초기화하고 목록에서 이미지를 렌더링로드에
. 하지만 목록에 50 개의 행이 있다고 가정 해 보겠습니다. 이제 10 개의 이미지가 성공적으로 다운로드되었으며 RunnableFactory는 여전히 작동 중입니다. 이 시점에서 뒤로 키를 누르고 다음을 클릭하십시오. 실질적으로 목록 화면에 와서 새로 다운로드 프로세스를 다시 시작해야합니다. 그러나이 문제가 모든 스레드가 실행되기 때문에
에 IllegalThredState 예외
내 가정을 던지고, 나는 누르면 다시 키에 모든 스레드를 취소해야 할 수도 있습니다. 이것이 문제라면 제게 어떻게 할 수 있는지 알려주십시오. 내가 여러 스레드를 작성 했으므로 어떻게 모든 스레드를 중지 한 다음 다시 탐색 할 수 있습니까?
이것은 더 복잡한 시스템처럼 보입니다. 아무도 내가이 문제에 대한 가능한 해결책이 무엇인지 이해할 수 있도록 도와 줄 수 있습니까?
종료로 무엇을 의미합니까? 방해하는 방법? 나는 스레드를 익명의 내부 클래스로 채우고 있습니다. 그래서 어떻게 모든 스레드를 중단합니까. 나는 그들 모두에 대한 언급이 없다. –
@Nilanchala,'RunnableFactory' 란 무엇입니까? 당신이 쓴'Runnables'를 만들기위한 공장입니까? 만약 그 소스를 가지고 있다면, 생성 한'Thread' 객체를 팩토리의 영구 멤버 변수로 저장하기 만하면됩니다. 그래서 나중에 그 객체에'Thread.interrupt()'를 호출 할 수 있습니다. – Nate