按Back会导致Activity完成()吗?

sto*_*986 17 lifecycle android android-activity

我听说按下后退按钮基本上会导致当前的Activity finish().总是这样吗?看起来就像它将Activity弹出堆栈的方式一样.

我不太确定的一种情况是当任务中的根活动被按下时.我目前正在经历一种非常奇怪的效果,描述如下:

在加载我的应用程序时,第一个Activity用于初始化,一旦完成,它将调用我的主Activity(TabActivity).这个第一个init活动在Manifest中设置了android:noHistory ="true",所以从我的主Activity中按回来将不会回到那个.它发送到启动器.当我第二次在Launcher中单击我的应用程序时,初始化活动再次加载,并在完成后加载主Activity.几乎在紧接着之后,它会加载我的主Activity的第二个实例.但是只有在应用程序已经运行一次之后,并且通过从主Activity中按BACK退出.它会在以后强制退出应用程序或从IDE加载新版本.

基于此,我怀疑某种Activity实例正在四处闲置并被重用,因为它只发生在我运行应用程序的第二个+时间(并使用BACK退出 - 使用HOME只返回到应用程序的最后状态,没什么大不了).任何人都有任何想法?

har*_*ara 11

我听说按下后退按钮基本上会导致当前的Activity完成().总是这样吗?

不它不是.大多数活动都有这种行为,但不是全部.例如,您可以创建一个Dialog并将其设置为setCancelable(false),如果单击BACK按钮它将不会关闭.

此外,您可以通过覆盖onBackPressed来自定义按下的BACK按钮上的活动行为

当活动检测到用户按下后退键时调用.默认实现只是完成当前活动,但您可以覆盖它以执行您想要的任何操作.

关于您的应用程序行为.您是否在加载主要活动后验证活动启动器是否已完成?我的意思是如果调用onDestroy()方法.也许在它运行主要活动之后它仍然在那里,当你点击回来时你只需要回到旧的启动器......

希望这可以帮助..


Mic*_* A. 5

阅读Android开发者网站上的活动和任务设计指南 ; 他们解释了Home和Back按钮的工作原理.显然,如果你覆盖默认行为(如上面的hara所述),后退按钮将不会完成活动.

在您的具体问题上,检查您的logcat.您应该能够看到它是否将旧流程恢复生机或启动新流程.如果不清楚,请在onCreate,onPause,onDestroyed等中插入几个日志语句,以便您可以准确了解您的流程发生了什么.