背景
我是一个参与一个相当大且非常复杂项目的开发人员。该项目的一半采用JavaScript编写,另一半采用Java编写,此外,约30%的基础产品预编译,因此我们无法准确地查看或调试其中的内容。
问题
当我们的应用程序返回前台时,活动堆栈会被销毁,只有根活动会被显示。我不能追踪为什么会这样。
迄今为止我尝试过的事情
- 在我能找到的每个finish()调用上设置断点,但没有一个被调用
- 将android:excludeFromRecents =“false”设置为每个活动
- 从AndroidManifest中删除android:launchMode =“singleTop”
- 我在第二个活动的onDestroy()方法中设置了断点,并且我可以看到“isFinishing()”方法执行为“True”,因此我知道不是操作系统正在销毁活动,但没有信息(据我所见)指出是哪个类/属性/方法导致调用该方法。在堆栈跟踪中没有有用的信息。在日志中没有有用的信息。
- 我也试图向公司周围的人询问,但到目前为止没有答案。
问题
有没有找出哪个生命周期方法被调用的策略?
更新1
感谢评论部分的细心提问和帮助。以下是序列图,以更好地解释正在发生的事情。
- 应用程序启动
- Activity A调用onCreate()
- Activity A调用onResume()
- 我启动Activity B
- Activity A调用onUserLeaveHint()
- Activity A调用onPause()
- Activity B 调用onCreate()
- Activity B调用onResume()
- Activity A调用onStop()
- 我将应用程序置于后台
- Activity B调用onUserLeaveHint()
- Activity B调用onStop()
- 我将应用程序返回到前台
- Activity B调用onDestroy()
- Activity A调用onRestart()
- Activity A调用onResume()
更新2
这里是内存使用情况的屏幕截图
当我启动Activity B时
当我把应用程序发送到后台时
当我回到前台