2012-02-03 2 views
0

먼저 내 앱이 닫힐 때 무언가를 만들기 위해 아래처럼 onDestroy() 메서드를 사용했습니다.onDestroy() 메서드가 작동하지 않습니다.

@Override 
protected void onDestroy() 
{ 
    super.onDestroy(); 
    mediaPlayer.stop(); 
    mediaPlayer2.stop(); 
} 

하지만 런타임 오류가 발생합니다. 대신 onStop() 메서드를 사용하여 문제가 해결되었습니다. 하지만 왜 onDestroy가 작동하지 않는지 궁금합니다. 설명해 주시겠습니까?

@Override 
protected void onStop() 
{ 
    super.onStop(); 
    mediaPlayer.stop(); 
    mediaPlayer2.stop(); 
} 

나는 내 코드에 대한 몇 가지 변경을하고 있었고, 난 내가 어떻게 작동하는지하지만 이해할 수없는)들의 OnDestroy와 중지시를() (변경시 현재 오류가 없습니다.

+0

어떤 오류가 발생했는지 알려 주시면 도움이됩니다. –

+0

로그에서받은 오류를 게시 할 수 있습니까? – DRiFTy

+0

"내 앱이 종료되었습니다"라고 말하면 앱에서 완전히 종료 할 때까지 뒤로 버튼을 누르거나 집 버튼을 누르기 만하면됩니다. – hooked82

답변

3

내 생각에 당신의 mediaPlayer 변수는 onDestroy에 도착하기 전에 0으로 설정 (소멸)되었습니다. 그리고 당신이보고 있던 오류는 nullpointerexception했습니다. 코드

@Override protected void onDestroy() { 
    super.onDestroy(); 

    if (mediaPlayer != null) { 
     mediaPlayer.stop(); 
     mediaPlayer2.stop(); 
    } 
} 
+0

그것은 null 일 것입니다.이 음악을 어떻게 멈출 수 있습니까? –

+1

코드에서 전에 널 (null)로 만들기 전에 중지해야합니다. 그러나이 코드를 사용하는 데 여전히 오류가 있으면 먼저 테스트하십시오. 오류를 게시하십시오! 그래서 우리는 어떻게 될지 압니다. – Yahel

2

가 재구성 :

@Override 
protected void onDestroy() 
{ 
    mediaPlayer.stop(); 
    mediaPlayer2.stop(); 
    super.onDestroy(); 
} 

당신은 먼저 파괴 한을

당신은들의 OnDestroy 방법으로 다시 물건을 넣어 당신의 MediaPlayer를 함께 아무것도하기 전에 간단한 널 테스트를 추가 할 수 있습니다 객체를 가져 와서 데이터를 가져 오는 것은 가능하지 않습니다. 먼저 모든 데이터를 검색 한 다음 super.onDestroy();

을 호출하십시오.

+0

시도했지만 작동하지 않았습니다. –

+0

@faridmovsumov, 당신이 받고있는 오류를 보여주십시오. nullpointer 인 경우 미디어 플레이어가 null이 아닌지 확인하십시오. 또한이 업데이트 된 onDestroy()에서 사용한 onStop 코드를 보여줍니다. – Tvd

+0

@faridmovsumov, 해결책이 있다면 가장 도움이되는 답변을 클릭하고 "답변으로 표시"를 클릭하십시오. 그러면 스레드가 SOLVED로 표시됩니다. 그렇지 않으면 다른 사용자가 당신을 도우 려하며 시간을 낭비하게됩니다. – Tvd

2

다른 방법을 시도 했습니까?

@Override 
protected void onDestroy() 
{ 
    mediaPlayer.stop(); 
    mediaPlayer2.stop(); 
    super.onDestroy(); //finally 
} 

나는이 응용 프로그램을 좋아합니다. 그리고 이러한 콜백이 어떻게 작동하는지 살펴보아야합니다.

+0

예했는데 작동하지 않았습니다. –

+0

확인. 스택 트레이스를 붙여 넣을 수 있습니까? –

관련 문제