我从不想开始的Android活动

时间:2012-06-02 01:27:47

标签: android android-activity lifecycle

我有一个以对话为主题的活动。我已经看到,如果对话框显示,然后我按下主页按钮,然后使用任务管理器,重新启动应用程序,该对话框活动将是应用程序启动的活动,没有其他活动可以返回至。也就是说,加载对话框活动时运行的活动未运行。所以我只是将这个以对话为主题的活动悬停在桌面上。那讲得通。

查看Android活动生命周期,操作系统会记住最后一个活动并尝试重新启动。所以我在我的活动中创建了所有on *方法(onResume,onRestart等)。我发现的确是令人费解的。当我从任务管理器重新启动应用程序时,会调用以下方法:

onCreate()
onResume()
onStop()
onDestroy()

我真的只是期待

onRestart()
onCreate()
onResume()
  • 为什么onStop和onDestroy立即被调用?为什么对话框仍然显示,即使onDestroy被调用?
  • 如何配置此应用,以便它永远不会仅在此对话框中启动?我可以使用相同的“父”活动和上面的对话框重新启动应用程序(就像我离开它一样),或只运行父活动并关闭对话框。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您应该在对话框代码中使用finish()。当用户从您的应用程序转换时,您希望这样做(当他们转到主页按钮,他们接到电话等时会发生这种情况......)。在这种情况下,您可能希望在对话框的finish()中调用onStop()。调用完成当前活动将其从堆栈中删除,从根本上获得您描述的行为。