2010-07-04 7 views

답변

2

당신은 같은 마무리() 활동 방법을 호출 할 수 있습니다

@Override 
    protected void onStop() { 
     finish(); 
     super.onStop(); 
    } 

그래서, 당신은 다시 완전히 응용 프로그램 중 홈 버튼 또는 충돌이 방법은, 그것을 끝나야합니다.

+1

사용자가 직접 생성 한 스레드는 중지되지 않습니다. – CommonsWare

+0

그걸 알았지 만, 내가 이해 한 바에 따르면, 그는 단지 배경에 앉아있는 것이 아니라 집/뒤로 버튼을 눌렀을 때 응용 프로그램을 닫길 원했다. 내가 잘못 이해하면 죄송합니다. – xil3

+0

난 그냥 그 스레드에 대한 udp 데이터를받습니다. 버튼을 누르면 응용 프로그램의 영상이 닫히지 만 데이터가 다시 버튼을 누른 후에 나타납니다. 그걸 묻습니다. 답장을 보내 주셔서 감사합니다. – Sumi

2

가장 좋은 해결책은 처음부터 직접 스레드를 생성하지 않는 것입니다. 백그라운드 스레드가 단지 약간의 작업을 수행하는 중이라면 자신의 스레드 대신 AsyncTask을 사용하는 것이 좋습니다. 또는 서비스 인 경우 IntentService을 사용해보십시오.

그렇지 않으면 백그라운드 스레드가 뭔가 (예 : 소켓에서 대기 중이고 LinkedBlockingQueue에서 대기 중)에서 차단되기를 바랍니다. 이 경우 차단중인 항목을 수행하여 스레드를 종료 할 수 있습니다 (예 : 소켓을 닫고 LinkedBlockingQueue에서 메시지를 보냄으로써 스레드가 작업 루프에서 빠져 나올 수 있음).

+0

당신은 뭔가 있다고 추측하고 있습니다. 그것보다 훨씬 더 복잡합니다. 그가 처음에 스레드를 만들었다는 것을 어떻게 알 수 있습니까? – xil3

+2

@ xil3 : 질문이 잘못 작성되었습니다. 우린 둘 다 틀릴 수도 있고, OP는 그의 셔츠에서 꺼내는 실을 가리키고 있습니다. 나는 OP가 스레드에 대해 물어봤을 때 OP가 하나를 만들었다 고 추측하고있다. 그렇지 않으면 나는 OP가 왜 어떤 스레드를 멈출 필요가 있다고 생각하는지 모른다. – CommonsWare

관련 문제