Android onDestroy()方法不起作用

Android onDestroy()方法不起作用,android,Android,首先,我使用如下的onDestroy方法在我的应用程序关闭时制作一些东西 @Override protected void onDestroy() { super.onDestroy(); mediaPlayer.stop(); mediaPlayer2.stop(); } 但它会导致运行时错误。我改用了顶上法,问题就解决了。但我想知道为什么onDestroy不起作用?你能解释一下吗 @Override protected void onStop() { sup

首先,我使用如下的onDestroy方法在我的应用程序关闭时制作一些东西

@Override
protected void onDestroy()
{
    super.onDestroy();
    mediaPlayer.stop();
    mediaPlayer2.stop();
}
但它会导致运行时错误。我改用了顶上法,问题就解决了。但我想知道为什么onDestroy不起作用?你能解释一下吗

@Override
protected void onStop()
{
    super.onStop();
    mediaPlayer.stop();
    mediaPlayer2.stop();
}
我对我的代码做了一些更改,现在当我 用onDestroy在顶部进行了更改,我不明白它是如何工作的


我猜您的mediaPlayer变量在到达onDestroy之前已被置零。您看到的错误是nullpointerexception

在使用mediaPlayer执行任何操作之前,您可以将您的内容放回ondestroy方法并添加一个简单的空测试:

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

    if (mediaPlayer != null) {
      mediaPlayer.stop();
      mediaPlayer2.stop();
    } 
 }
重新编写代码:

@Override 
 protected void onDestroy() 
 { 
    mediaPlayer.stop(); 
    mediaPlayer2.stop(); 
    super.onDestroy(); 
 } 
您首先销毁对象,然后从中检索数据,这是不可能的。 首先,检索所有数据,然后调用super.ondestory


这应该行得通。

你试过另一种方法吗

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

我真的很喜欢我的申请。我想你应该看看这些回调是如何工作的。

这将有助于告诉我们你遇到了什么错误。你能在日志中公布你收到的错误吗?当你说我的应用程序已关闭时,这是否意味着你按下后退按钮直到完全退出应用程序,还是只有当你按下“主页”按钮时才会发生这种情况?@faridmovsumov我不明白你为什么要停止onDestroy中的音乐。当你从用户的角度来看它时,它看起来很奇怪。无论您在onStop中做什么,都显得很合适。如果你想让音乐持续播放,即使你的用户不再在应用程序中,你应该使用服务。这是一个非常小的应用程序,只是为了开玩笑。好的。你能粘贴stacktrace吗?如果它是空的,我怎么能停止这个音乐?你必须先停止它,然后才能在代码中取消它。但是,如果使用此代码仍有错误,请首先进行测试。并发布你的错误!!所以我们知道会发生什么。@faridmovsumov,展示你得到的错误。如果是空指针,那么您确定mediaplayer的不为空。还显示您在更新的onDestroy中使用的桌面代码。@faridmovsumov,如果您得到了解决方案,请单击对您帮助最大的任何答案并标记为答案。这将标志着线程已解决-否则其他人将试图帮助你,浪费他们的时间。