2014-06-11 2 views
0

스레드를 일반적인 방법으로 만들고 "Encoder"라는 이름을 붙였습니다. 응용 프로그램이 닫히고 다시 시작되면 스레드의 객체가 파괴되어 다시 생성됩니다. 전에 시작한 Thread가 여전히 실행 중인지 알 수있는 방법이 있습니까? ?스레드가 Android에서 실행 중인지 확인하는 방법

+0

당신은 닫고 다시 시작 된 응용 프로그램을 알 수있는 활동의 라이프 사이클 이벤트를 사용할 수 있습니다. 그리고 적절한 일을하십시오. –

+0

스레드가 아직 실행 중인지 알고 싶습니다. 어떤 활동주기가 이것과 관련이 있습니까? – omerjerk

+2

활동이 파괴되면 스레드가 여전히 존재할 수 있지만 프로세스가 파괴되면 스레드가 모두 사라집니다. 궁극적으로,/proc/self/task 의사 디렉토리는 활동에 관련된 실제 네이티브 스레드를 열거 할 수있게 해줄 것입니다. 그러나 이들과 관련된 Java 스레드를 파악하는 것은 반드시 쉬운 일은 아닙니다. 싱글 톤을 사용하여 스레드 생성을 추적 할 수 있습니다. 물론 스레드가 아직 생성되지 않은 새 프로세스에서는 null이됩니다. –

답변

0

.isAlive()을 사용할 수 있습니다. 문서에서

:

시험이 스레드가 살아있는 경우. 이 시작되었고 아직 죽지 않은 스레드는 살아 있습니다.

+0

나는 앱을 다시 열 때 쓰레드의 객체가 파괴된다는 것을 언급했다. 이 경우에는 작동하지 않습니다. – omerjerk

+1

개체를 싱글 톤으로 만듭니다. 여전히 원래 프로세스에 있다면, 싱글 톤은 프로세스와 관련하여 정적이므로 파괴되지 않습니다. 새로운 프로세스에서 다시 여는 경우에는 싱글 톤이 null이되며 아직 스레드가 시작되지 않았다는 것을 알게됩니다. –

1

앱을 잘못 설계하고 있습니다.

활동이 끝난 후에도 Thread이 작업을 계속 수행하고 새로운 활동이 "마지막으로 남은 곳을 선택"할 수 있다면 Service을 사용해야하며 다음 활동을 수행 할 수 있습니다. 그것.

당신은 여기를 구현하는 데에 대한 자세한 방법을 읽을 수 있습니다 : http://developer.android.com/guide/components/bound-services.html

관련 문제