Java 如何捕获Android应用程序关闭

Java 如何捕获Android应用程序关闭,java,android,Java,Android,我希望有一个在我的应用程序关闭时调用的函数。我的应用程序中的所有活动都扩展了一个自定义类MenuActivity,该类反过来扩展了活动类。在MenuActivity中,我有以下代码 @Override protected void onDestroy() { System.out.println("DESTROY IT"); } 由于某种原因,我从未看过这篇文章。我试过使用和不使用super.ondestory()在那里。我希望在用户关闭应用程序(按住home按钮查看打开的应用程序并

我希望有一个在我的应用程序关闭时调用的函数。我的应用程序中的所有活动都扩展了一个自定义类
MenuActivity
,该类反过来扩展了
活动
类。在MenuActivity中,我有以下代码

@Override
protected void onDestroy()
{
    System.out.println("DESTROY IT");

}
由于某种原因,我从未看过这篇文章。我试过使用和不使用
super.ondestory()在那里。我希望在用户关闭应用程序(按住home按钮查看打开的应用程序并滑动以关闭)或应用程序崩溃时能够调用此函数。我需要在应用程序关闭时做一些清理(关闭正在进行的通知,以及其他一些事情)

我认为使用onDestroy方法应该足够简单,但它似乎从未被调用过。有什么想法吗?

您应该使用onStop()来实现这一点。 您可以在此处阅读有关android活动生命周期的更多信息:


android开发者指南是一个很好的资源。

如果您想在用户使用其他应用程序时保持应用程序运行,您需要将媒体播放器作为前台服务来实现。您可以在启动此服务时传递通知

查看此链接:特别是关于“作为前台服务运行”的部分。

方法
onDestroy()
不会每次都被调用,但您可以这样做:

public void onPause() {
   super.onPause()
   if (isFinishing()) {
       //call some method
   }
}

onStop()
方法不足以满足我的需要。我正在做的是创建一个持续的通知,允许您在我的应用程序中播放、暂停和转到上一首和下一首歌曲。我希望即使您切换到另一个应用程序,或使用手机回家,此通知仍保持活动状态,以便您仍然可以在应用程序之外访问播放器的功能。如果你打电话回家,就会调用
onStop()
函数,因此这违背了我持续通知的目的。听起来你需要使用服务。我也试过这种方法,但似乎不起作用。当您按住“菜单”按钮并向左或向右滑动“活动”以将其关闭时,“代码>如果(isFinishing())
子句中的代码永远不会到达。当您按住“菜单”按钮时,“活动”不会关闭,它会停止或暂停。当您按下后退按钮或调用方法finish()时,您的活动将完成。当您打开任务管理器并从此处结束任务时,也不会调用该活动。当您从任务管理器结束任务时,您的应用程序将被终止,并且不会调用任何方法