如何在Android应用中识别这些事件?
据我所知,最接近的解决方案是这里介绍的解决方案: https://stackoverflow.com/a/15573121/558433
但是,这也无法识别appClose(并且是基于时间的解决方法= /)。
我认为主要活动onDestroy可能是“退出点”,但该方法通过Activity生命周期多次调用(在Activity事务之间等等)。
这就是问题,我怎样才能认出这些事件: 应用程序移至后台(按下此主页按钮); 应用程序移动到Foreground(活动在后台从堆栈恢复); 申请完全结束(可能是对第一项活动的最终破坏); 应用程序在后台关闭(例如来自用户操作或Android系统);
提前致谢!
答案 0 :(得分: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是我的应用程序类的自定义方法,如上所述,检查新活动的类名是否与旧活动的类名匹配。