2012-02-03 12 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でonStop()を変更するエラーはありませんでした。

+0

エラーが発生しているかどうかを教えてください。 –

+0

ログから受け取ったエラーを投稿できますか? – DRiFTy

+0

「私のアプリが閉じている」と言うと、アプリから完全に離れるまで戻るボタンを押したことを意味しますか、これはホームボタンを押すだけです。 – hooked82

答えて

3

私の推測では、あなたのmediaPlayer変数は、onDestroyに到着する前に無効になっています(破棄された)と思います。そしてあなたが見ていたエラーは、ヌルポイントレセプションでした。あなたのコード

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

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

私はこの音楽を止めるにはどうすればいいですか? –

+1

前にコードを無効にする前に、コードを停止する必要があります。しかし、最初にこのコードを使用してエラーが発生しているかどうかを最初にテストします。あなたのエラーをポストしてください!だから我々は何が起こるか知っている。 – Yahel

2

がリフレーム:

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

あなたが最初に破壊されたが

あなたはondestroy方式に戻す自分のものを入れて、あなたのMediaPlayerで何かを行う前に、簡単なヌルのテストを追加することができますオブジェクトからデータを取得することはできませんが、これは不可能です。 最初にすべてのデータを取得してからsuper.onDestroy();

これはうまくいくはずです。

+0

私はそれを試したが、うまくいかなかった。 –

+0

@faridmovsumov、あなたが得ているエラーを表示してください。 nullpointerの場合は、mediaplayerの値がnullでないことを確認してください。この更新されたonDestroy()で使用したonStopコードも表示します。 – Tvd

+0

@faridmovsumov、あなたが解決策を手に入れたら、あなたを最も助けてくれた回答をクリックし、「回答としてマークする」をクリックしてください。それはスレッドが「解決済み」とマークします。そうでなければ、他の人があなたを助けようとし、自分の時間を無駄にします。 – Tvd

2

他の方法を試しましたか?

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

私はこのアプリケーションが好きです。そして、私はあなたがこれらのコールバックがどのように働くかを見てみるべきだと思います。

+0

はい私はそれをしましたが動作しませんでした –

+0

Ok。スタックトレースを貼り付けることはできますか? –

関連する問題