Android Studio-杀戮过程重启应用程序?

Android Studio-杀戮过程重启应用程序?,android,android-studio,Android,Android Studio,我不知道为什么会发生这种情况,但当我使用Android studio并单击红色的x来终止我的应用程序时,它将重新启动我的应用程序以启动主活动。我注意到只有当我从主要活动进展到另一个活动时,它才会发生 例如,如果我在查看“活动A”屏幕时尝试终止进程,则进程将被终止,无需重新启动,但如果我在查看“活动B”时终止进程,则从“活动A”上的按钮按下,进程将重新启动 发生这种情况的原因是什么?我发现,“终止应用程序”被实现为System.exit(1) 看起来Androids的exit(int)函数是软性实

我不知道为什么会发生这种情况,但当我使用Android studio并单击红色的x来终止我的应用程序时,它将重新启动我的应用程序以启动主活动。我注意到只有当我从主要活动进展到另一个活动时,它才会发生

例如,如果我在查看“活动A”屏幕时尝试终止进程,则进程将被终止,无需重新启动,但如果我在查看“活动B”时终止进程,则从“活动A”上的按钮按下,进程将重新启动

发生这种情况的原因是什么?

我发现,“终止应用程序”被实现为
System.exit(1)

看起来Androids的
exit(int)
函数是软性实现的,以保存活动堆栈

在我看来,这是因为当设备内存不足时,调试应用程序重新启动需要“终止应用程序”。因此,它在这样的顺序中非常有用:

  • 启动应用程序,打开一些活动
  • 按“主页”隐藏应用程序
  • 在Android Studio中终止应用程序
  • 重新打开设备上的应用程序,应用程序应恢复上一个活动,而不是 主要的

当应用程序未隐藏时,它的行为是无法预料的。这是由于执行了
exit
。它会保存堆栈的一部分,但会终止可见的活动,然后重新启动应用程序以恢复堆栈。

明白了,所以它实际上不会仅终止该活动而终止整个应用程序。我假设这是一种针对将应用程序在特定活动的后台放置一段时间并尝试稍后返回的用户进行测试的方法,对吗?是的!我刚刚测试了3个和4个启动的活动-它只终止最后一个。是的,我还假设,这是测试从后台返回的方法。我正在使用它,并且也阅读了它。太棒了!谢谢,这是我绝对不知道的。@JoeGinley:这个答案很有帮助,但我不同意那些表示整个应用程序没有终止的评论。当我测试时,logcat输出清楚地显示应用程序的进程被终止。您可以通过打开AS
logcat
窗口,将过滤器设置为“无过滤器”,并在执行终止操作时查看输出来确认这一点。您将看到
AndroidRuntime:VM退出,结果代码为1,清除被跳过
ActivityManager:Process com.example.yourapp(pid 29469)(调整0)已死亡。
谢谢。我在回答中提到了你的评论。我还注意到应用程序会重新启动。