0

如何从 Android 应用程序中识别这些事件?

据我所知,最接近的解决方案是这里介绍的解决方案: https ://stackoverflow.com/a/15573121/558433

但是,这也不能识别 appClose (并且是基于时间的解决方法 =/ )。

我认为主要活动 onDestroy 可能是“退出点”,但该方法在活动生命周期中被多次调用(在活动事务之间等等)。

所以这就是问题,我如何识别事件:应用程序移至后台(按下主页按钮);应用程序移至前台(在后台从堆栈恢复活动);应用程序完全关闭(可能是第一个活动的最终销毁);应用程序在后台关闭(例如通过用户操作或 Android 系统);

提前致谢!

4

1 回答 1

0

onAppClose 没有回调。

无论您是在应用程序中启动新活动,还是用户进入主屏幕并返回应用程序,活动都会经历相同的生命周期。

您可以采取一些解决方法。

这个库可能很有趣 - https://github.com/curioustechizen/android-app-pause。它为 onAppPause 和 onAppResume 向应用程序类添加回调。它对我的目的不太有效。

通过将活动活动的当前类名存储在应用程序类上,我设法很好地检测到应用程序何时从后台恢复。

每当恢复活动时,我都会检查存储的活动类(即前一个)是否与正在恢复的活动类相同。

如果相同,那么我们可以假设应用程序正在从后台恢复。如果它是一个不同的类名,那么这意味着用户正在导航到您的应用程序内的另一个活动。

当从历史记录(最近的应用程序列表)启动活动时,还有一个标志设置在意图上。

这是我在我的活动 onResume 方法中使用的代码:

if (((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) > 0 || MyApplication.getInstance().isActivityResumedFromBackground(){
//activity is being resumed from background
}

isActivityResumedFromBackground 是我的应用程序类上的一个自定义方法,如上所述,它检查新活动的类名是否与旧活动匹配。

于 2013-08-07T00:51:36.503 回答