上下文
我是开发一个非常庞大且非常复杂的项目的开发人员之一。项目的一半用JavaScript编写,另一半用Java编写,而且大约30%的基础产品是预编译的,所以我们无法完全查看内部或通过它进行调试。
问题
当我们的应用程序返回到前台时,活动堆栈将被销毁,并且只显示根活动。我无法追查原因。
到目前为止我尝试过的事情
问题
是否有任何策略可以找到导致某个生命周期方法被调用的原因?
更新1
感谢您在评论部分提出的重大问题和帮助。以下是更好地解释发生情况的序列图。
更新2
以下是内存使用情况的屏幕截图
当我启动活动B
时当我将申请发送到后台时
当我回到前台时
答案 0 :(得分:2)
找到了解决方案!
原来我的root活动设置了以下属性:
android:clearTaskOnLaunch="true"
以下是documentation:
的引用机器人:clearTaskOnLaunch 是否所有活动都将是 除了根活动之外,每次都从任务中删除 从主屏幕重新启动 - 如果任务总是如此,则为“true” 剥离到它的根活动,如果不是,则“假”。默认 价值是“假”。此属性仅对活动有意义 开始一项新任务(根活动);所有其他人都忽略了它 任务中的活动。当值为“true”时,每次用户 再次启动任务,无论如何,它们都会被带到它的根活动 他们最后在任务中做了什么,而不管是否 他们使用Back或Home按钮离开它。当值是 “假”,在某些情况下可以清除任务中的任务(见 alwaysRetainTaskState属性),但并非总是如此。
例如,假设有人从家中启动活动P. 屏幕,从那里去活动Q.用户接下来按Home, 然后返回活动P.通常,用户会看到活动 问:因为这是他们上次在P的任务中做的事情。但是,如果P 将此标志设置为“true”,将所有活动设置在其上(Q在此 当用户按下Home并且任务转到了 背景。因此用户在返回任务时只看到P.
如果此属性和allowTaskReparenting都是“true”,则为any 可以重新制作父母的活动将移动到他们共享的任务中 亲和力;如上所述,其余的活动随后被删除 上方。
这是一篇很棒的文章,帮助我找到它:http://developer.android.com/guide/components/tasks-and-back-stack.html
答案 1 :(得分:1)
不确定这是否有效:
@Override
public void finish() {
super.finish();
Log.d("derp", "who is calling me?", new RuntimeException());
}