내 응용 프로그램에는 사용자가 종료 버튼을 누를 때까지 실행되는 하나의 서비스가 있습니다. 나는 안드로이드에서 출구 버튼을주는 것이 좋은 디자인이 아니라는 것을 알고 있지만, 내 응용에는 바람직하다.Android에서 프로세스 죽이기없이 백그라운드 스레드를 중지 할 수있는 방법이 있습니까?
내 응용 프로그램에는 HTTP 요청을 보내고 파일을 다운로드 한 다음 백그라운드에서 구문 분석하여 UI가 차단되지 않도록하는 스레드가 있습니다. 내 스레드의 run 메서드에는 파일을 다운로드 한 다음 파싱하는 등의 순차적 인 단계가 있으며 while 또는 for 루프가 없습니다.
사용자가 종료 버튼을 누르면 프로세스가 kill (Process.kiil (pid) 또는 System.exit (0) 사용)없이 실행중인 경우 백그라운드 스레드를 중지 할 수있는 방법이 있습니까?
나는 또한 AsyncTask를 시도했다. 스레드의 run 메소드가 무엇이든 doInBackground 메소드에 넣는다. 사용자가 종료 단추를 누르면 asynctask가 취소되었습니다. 작업을 취소하면 백그라운드 스레드를 완전히 멈추지 않습니다. 파일을 다운로드 한 후 파일을 구문 분석하기 위해 파서 (파싱은 백그라운드 스레드에서 수행되지만 파싱 할 때 doInBackground 또는 메소드를 실행하지 않기 때문입니다. 파싱 메서드에서 수행됩니다. 파서 클래스의 또는 기본 처리기 클래스에서 구문 분석.)
검색에서 나는 많은 블로그와 스레드에 대한 다른 stackoverflow 질문을 읽었지만 여전히 그것에 대한 해결책을 찾을 수 없습니다. 당신이
if(stillRunning){
//next step
}
같은 라인을 추가 할 수 있습니다 각 단계 전에 ... 사전에 ....
를 사용하지 않고 수 없습니다 그러나 XML 파서 ([이] (HTTP와 같은 기본 핸들러의 서브 클래스의 모든 단계에서 가능한 방법 : //www.ibm.com/developerworks/kr/opensource/library/x-android/index.html) ( ) Listing 6. SAX 핸들러 –