【问题标题】:Android activity that I never want to start on我永远不想开始的 Android 活动
【发布时间】:2012-06-02 09:59:02
【问题描述】:

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

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

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

我真正期待的地方

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

【问题讨论】:

    标签: android android-activity lifecycle


    【解决方案1】:

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

    【讨论】:

    • 我已经尝试了您的建议,并在 onStop() 中调用了 finish(),但没有成功。它没有改变任何事情。它仍然在对话活动中重新启动。
    • 哦,我的清单中也有 noHistory="true" 和 finishOnTaskLaunch="true"。
    • 尝试将 finish() 调用放入 Activity 的 onPause() 方法中。
    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多