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 是我的应用程序类上的一个自定义方法,如上所述,它检查新活动的类名是否与旧活动匹配。