2

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

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

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

我真正期待的地方

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

1 回答 1

1

finish()在这种情况下,您应该在 Dialog 代码中使用调用。您希望在用户离开您的应用程序时执行此操作(当他们转到主页按钮、接到电话等时可能会发生这种情况......)。在这种情况下,您可能希望在 Dialog 中进行finish()调用onStop()。完成当前活动的调用将其从堆栈中删除,从而获得您所描述的行为。

于 2012-06-02T01:59:02.477 回答