2013-01-17 1 views
1

1 분마다 실행되는 하나의 스레드가있는 안드로이드 응용 프로그램이 있습니다. 내 문제는, 하나의 버튼을 클릭하면 앱을 리셋해야한다는 것입니다. 즉, 신선한 앱이 될 것입니다. 이제 버튼을 클릭하면 모든 데이터베이스와 공유 환경 설정이 지워집니다. 하지만 스레드가 다시 시작됩니다.안드로이드에서 슬립 모드에서 하나의 스레드를 죽이기

지금은 완성/죽은) 스레드가이

1

을 의미 살아 있지 않으면 당신에게 비슈누

+0

나는 'android'에 익숙하지 않지만 자바에서는 다른 트레드를 기다릴 때'join'을 사용할 수 있습니다. –

+0

@ ZagorulkinDmitry - 예. 할 수 있습니다. 그러나 그가 스레드를 기다릴 필요가 있다는 것은 분명하지 않습니다. –

답변

1

감사이

if (killthread.isAlive()) { 

      killthread.interrupt();     


      }else { 

       // Here what'll i do, I mean how to kill that thread, which in sleep mode. 

} 

처럼 사용하고 있습니다. 아무것도 할 필요가 없습니다.

2) 새로 만들거나 아직 시작하지 않은 항목입니다. Thread.start()가 아직 호출되지 않았습니다. 이 경우 Thread.interrupt()는 아무 효과가 없습니다. 당신이 할 수있는 유일한 일은 사용자 정의 로직입니다 - 더 이상 필요하지 않은 쓰래드를 시작할 코드를 알리십시오.

+0

답장을 보내 주셔서 감사합니다. 여기 버튼을 클릭하면 else 부분이 나타납니다.하지만 1 분 후에 스레드가 시작됩니다. 단계에서 어떻게 멈추게할까요? – amtest

+0

처음에는 문제가 더 복잡해 보입니다. 그럼에도 불구하고 내 업데이 트를보고, 그것이 hepls 희망 –

2

답장을 보내 주셔서 감사합니다. 그 버튼을 클릭하면 다른 사람에게 올 것입니다. 1 분 후에 실이 시작됩니다. 무대에서 멈추는 방법은?

스레드 자체와 관련이 있습니다. 제 생각에는 인터럽트를 무시하도록 코드를 작성했기 때문입니다.


좋아요, 다음은 댓글의 코드입니다.

public void run() { 
    while (true) { 
     try { 
      Thread.sleep(60000); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
     } 
    } 
} 

이것은 스레드가 중단 될 때 발생하는 예외를 catch하고 자동으로 무시하는 것입니다. 계속 진행하십시오.

인터럽트를 멈추고 싶다면 ...이게되어야합니다.

public void run() { 
    while (true) { 
     try { 
      Thread.sleep(60000); 
     } catch (InterruptedException e) { 
      return; 
     } 
    } 
} 
+0

감사합니다, 더 지정할 수 있습니까? – amtest

+0

스레드가 잠자기 상태 인 코드를 표시 할 수 있습니까? 즉 우리가 문제가 정말 (내가 생각하는) –

+0

공공 무효 실행()이 무엇인지 볼 수 있습니다 { \t 동안 (사실) { 시도 { \t 에 Thread.sleep (60000); } 캐치 (의 InterruptedException E) {// TODO 자동 생성 catch 블록 }}} – amtest

관련 문제