제목이 문제를 거의 설명합니다.완료된 스레드를 다시 시작하면 크래시가 발생합니다 (Android SDK)
나는이 스레드를 켜기/끄기 버튼을 누르면 버튼이 있습니다. 그것을 성공적으로 켜고 끕니다 ... 한 번 켜면 다시 켤 때 충돌합니다.
private Thread dataThread = new Thread(new Runnable(){
public void run() {
while(transmitPackets){
Log.d("Test","DERP");
}
}
});
어디 그것의 실행 ...
toggleButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
transmitPackets = !transmitPackets;
if(transmitPackets) {
toggleButton.setText("Pause");
dataThread.start();
}
else {
toggleButton.setText("Transmit");
}
}
});
에서는 TransmitPackets는 버튼을 눌러 토글 부울입니다. 이 앱은 결국 네트워크를 통해 데이터를 전송하기 때문에 이름이 붙여졌습니다. 스레드는이를 사용하여 종료합니다.
애플 리케이션 크래시에 의해 생성 된 스택 추적은 스레드를 다시 시작할 때 충돌이 발생한다는 것을 말하면서 문제를 스스로 해결하는 방법을 찾는 데 특히 도움이되지 않습니다.
저는 안드로이드 SDK와 자바 모두에 대한 글을 쓰고있어서 어디서 잘못 될 수 있는지 모릅니다. 이것은 가능한 스레드의 가장 단순한 구현 인 것 같습니다. 스레드와 함께 펑키 한 것을 시도하기 전에 시작하는 부분입니다.
모든 대답은 여기있어, 고마워! 난 그냥 스레드가 OnClickListener에서 만들어지고 아름답게 작동하고있어. 그게 무슨 가치가 있는지, 그 예외는 충돌이 생성 된 스택 추적에 없습니다. 나는 어느 쪽이든 도움을 주셔서 감사합니다. – Wuzseen
@Wuzseen : 스택 트레이스는 어떻게 생겼습니까? 한 걸음 물러나서 스스로 진단 할 수없는 이유를 분석해야합니다. 스택 추적은 "특별히 도움이되지 않습니다"라고 말하지만 실제로 질문에 복사 한 경우 도움이 될 수있는 방법을 알 수있었습니다. –