我正在谈论在安卓中的编程问题。
早些时候,我认为finish()
会“关闭当前活动”并返回到活动堆栈中的前一个活动,而System.exit(0)
则“关闭整个应用程序”。
但是我错了。 我做了一个小实验,发现两者都只会结束当前活动。
我能够注意到的唯一区别在于,在Android 2.3.3中:
- 使用
finish()
将ActivityResult传回到onActivityResult()
。退出时onActivityResult()
不被调用。
然而,在Android 4.2.2中,对于两者onActivityResult()
都会被调用!并且Intent在exit()的情况下为null。(我只在这两个设备上测试过)
- 使用exit()会有时间延迟,而
finish()
速度更快。(似乎退出操作中有更多的后台操作)
所以,
两者之间有什么区别?
在哪些情况下,我可以使用exit()?
我相信我在两种方法之间还遗漏了一些东西。 希望有人能够更好地解释并纠正我。
谢谢
根据请求进行编辑:
创建一个安卓应用程序,其中包含两个活动。使用Intent从Launcher活动中调用第二个活动。现在,在第二个活动中,通过单击按钮调用System.exit(0);
。
根据文档,“VM将停止进一步执行,程序将退出”。
我看到了第一个活动。为什么? (欢迎您证明我是错的/我是对的)
System.exit()
,可以使用finish()
。对于导航,可以使用导航抽屉。 - Raghunandan