【问题标题】:Android back button does not restart activity?Android后退按钮不重新启动活动?
【发布时间】:2010-05-08 05:12:22
【问题描述】:

我的应用启动了一项活动。单击按钮后,应用程序会打开带有网页的浏览器。当我点击后退按钮时,它会返回到我的初始活动屏幕,但不会恢复或重新启动活动。

当我将所有布局代码和活动代码放入 onResume 而不是 onCreate 时,活动会重新启动。

我的问题是这是否是正确的方法?我可以使用 onResume 来绘制我的布局并启动活动,还是这是糟糕的设计?当浏览器启动时,初始活动是否会忘记其布局?

请告诉我你的建议。

谢谢 克里斯

【问题讨论】:

    标签: android android-activity restart onresume


    【解决方案1】:

    大多数情况下你应该阅读Activity Life Cycle

    只要你只做一次就可以在 onResume 中初始化。要么有一个专用的 hasInitialized 成员,要么检查一些其他具有相同含义的值,如果设置了就不要再次初始化。

    【讨论】:

    • 我的问题更多的是这样一个事实,即在 onCreate 方法中开始布局创建和活动启动一切正常,但是当我从浏览器返回时,只呈现了布局,但活动没有开始。当浏览器打开时,布局到底发生了什么?将相同的代码放入 onResume,启动一切并在按下后退按钮后重新启动活动。
    • 当我在 onCreate 中绘制布局并启动活动时,在浏览器按下后退按钮时,布局被渲染但活动不会重新启动。当我在 onCreate 中什么都不做,但在 onResume 中绘制布局并开始我的活动时,按下后退按钮会呈现布局并重新启动活动。
    • 我同意这个答案:您应该阅读链接到的页面:developer.android.com/reference/android/app/…“但是当我从浏览器返回时,只呈现了布局,但没有启动活动”- - 不,活动肯定已经开始,正如调用 onStart() 所定义的那样。
    • 链接图中可以看到,onResume可以在onStart或者onPause之后调用,onStart可以在onCreate或者onRestart之后调用。
    • 谢谢大家。尽管多次重新阅读生命周期,但我并不确定我的应用程序调用了哪些方法。我尝试将 Log.v 放入所有方法中并观察它运行,现在一切都非常清楚了!谢谢大家!