是否可以检测应用程序的退出?

Posted

技术标签:

【中文标题】是否可以检测应用程序的退出?【英文标题】:Is it possible to detect exit of an application? 【发布时间】:2013-04-24 07:24:22 【问题描述】:

我的 android 应用程序允许从此启动其他已安装的应用程序。这显示了一些允许的应用程序。如果用户尝试启动不允许的应用程序,则显示一条消息并使用正在运行的任务返回到我的活动(每个应用程序从哪里启动)。我的应用程序充当家庭启动器。因此,如果它是被阻止的应用程序,则意图执行此活动。例如:可以从三星设备的图库中启动相机。如果相机不是允许的,则显示被阻止的消息并退出到我的活动。但是当重新启动画廊时,被阻止的消息再次显示,因为顶部活动(相机活动)位于堆栈中。

但是这些被阻止的应用程序的退出并没有完美地工作。

    是否可以获取应用程序的关闭/退出事件?

    我怎样才能完成整个应用程序(通过完成所有应用程序)。

    如何在没有任何先前启动历史的情况下启动应用程序?

提前致谢

【问题讨论】:

您好,您可以使用这个答案***.com/a/61101320/4718406 【参考方案1】:

是否可以获取应用程序的关闭/退出事件?

是的,可以在您的LauncherActivity 中使用override onDestroy 此方法将在应用程序退出时调用。

How can i finish an application as whole(By finishing all its applications)?

我相信您想在这里停止所有正在运行的活动。这可以通过多种方式实现。

android.os.Process.killProcess(android.os.Process.myPid());

Intent intent = new Intent(getApplicationContext(), YourHomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

这将清除所有活动并将用户带到HomeActivity。在调用它时,您可以在意图中添加一个标志并使用该值您也可以完成HomeActivity。使用finish()方法完成活动。

如何在没有任何先前历史记录的情况下启动应用程序 发射?

您可以使用与上述相同的解决方案来实现此目的。第二个。

希望这会有所帮助。

应用程序类中有onTerminate 方法,但不能在生产环境中使用。查看更多关于此here

【讨论】:

在使用 onDestroy() 时,在这里我检测到我的应用程序的退出。我想检测从我的应用程序启动的其他应用程序的关闭事件。 Wait.... 重写 LauncherActivity 的 onDestroy 函数?如果 LauncherActivity 导航到另一个 Activity 怎么办?这也将调用 onDestroy。这对我来说似乎是灾难性的。如果我错了,你能纠正我吗? 除非您完成活动或清除活动堆栈,否则它不会调用 onDesyroy。 那么在我的情况下,我将无法检测到我的应用程序的退出? @Triode,我知道。我一直在寻找如何捕捉关闭事件并通过解决方法解决它。 Android 的 API 非常令人失望。

以上是关于是否可以检测应用程序的退出?的主要内容,如果未能解决你的问题,请参考以下文章

反调试技术常用API,用来对付检测od和自动退出程序

检测程序是否退出的bat脚本

是否可以检测到 iOS 设备上的密码何时被修改?

Process.Responding检测进程退出,同时进程运行

一种检测某人已关闭应用程序的方法

jsp中如何检测浏览器关闭