【问题标题】:Android Programming: onPause() called, onSaveInstanceState(...) notAndroid 编程:调用 onPause(),不调用 onSaveInstanceState(...)
【发布时间】:2014-05-21 21:59:20
【问题描述】:

我正在学习android。我正在看的书似乎在说,如果一个活动被暂停,就会调用onSaveInstanceState(...)方法。

当我点击主页按钮时, onSaveInstanceState(...) 在 onPause() 被调用之后被调用。 LogCat 显示调用了 onPause(),调用了 onSaveInstanceState,然后调用了 onStop()。

当我点击返回按钮时,LogCat 显示调用了 onPause()、调用了 onStop()、调用了 onDestroy()。未调用 onSaveInstanceState(...)。

是否应该在调用 onPause() 之后始终调用 onSaveInstanceState(...)?如果不是,为什么在我回家时在 onPause() 之后调用它,而在我回击时在 onPause() 之后调用它?

谢谢!

格雷格

【问题讨论】:

    标签: android activity-lifecycle


    【解决方案1】:

    onSaveInstanceState() 在以下情况下被调用:

    • 点击主页按钮
    • 设备方向发生变化
    • 当您将应用切换到另一个应用时(从列表中选择另一个应用)

    如果您完成了活动(以编程方式或点击返回按钮),则不会调用 onSaveInstanceState()。

    关于 onRestoreInstanceState() 见这篇文章:

    Android: onSaveInstanceState not being called from activity

    【讨论】:

      【解决方案2】:

      onSaveInstanceState(...) 在您点击主页按钮时被调用,因为您可以在该特定点保存包并返回到您离开应用程序的同一点

      例如,如果您正在某个新闻应用程序中阅读新闻,并且您已经浏览了整个页面的一半,现在您想点击主页按钮使用其他应用程序并返回阅读新闻 您会期望从您离开的地方阅读新闻,您不想从顶部写入开始滚动,因此当用户单击主页按钮时会调用 ONsaveInstance,您可以在其中保存捆绑包的视点,从那里恢复视图。

      【讨论】:

        猜你喜欢
        • 2012-02-05
        • 2015-09-17
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多