【问题标题】:Onstop method is called when Orientation changes当方向改变时调用 onstop 方法
【发布时间】:2019-08-26 05:01:11
【问题描述】:

当我改变 Android 应用程序的方向时,它会调用 onStop 方法,然后调用 onCreate。如何避免在方向改变时调用 onStop 和 onCreate?

【问题讨论】:

    标签: android


    【解决方案1】:

    这个问题已经很久没有活跃了,但我仍然需要回答这个问题。我有同样的问题并找到了答案。

    在清单中,您应该在您的活动中添加 android:configChanges=orientation|screenLayout|layoutDirection|screenSize,这不应在方向更改时调用默认操作。

    ...
    <activity android:name=".Activity"
      android:screenOrientation="portrait"
      android:configChanges="orientation|screenLayout|layoutDirection|screenSize" 
    ...
    


    在您的活动中:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
        // This overrides default action
    }
    



    原文示例:
    http://android-er.blogspot.fi/2011/05/prevent-activity-restart-when-screen.html

    【讨论】:

    • 对于更新的操作系统,我还必须添加“|screenSize”。
    • 是的,基本上添加任何可能与方向变化相关或引起的参数。
    • 已编辑答案,因此“screenSize”也在参数列表中。
    【解决方案2】:

    这是默认行为:当方向改变时重新创建活动。但是您可以决定忽略此事件。你可以在这里找到详细信息:How to make an application ignore screen orientation change?

    【讨论】:

    • 嗯,链接文章中的技术显然可以防止方向更改,但不能在方向更改时调用回调(这是所要求的)。
    【解决方案3】:

    你无法避免,那些是系统回调。 您可以在 onStop 中保存状态,然后让系统将其传递给 onCreate,以便在屏幕方向更改后更快地恢复状态。

    另请参阅开发者页面上的 thisthat 文章。

    【讨论】:

    • 这可以通过调用 android:configChanges="orientation|keyboardHidden" 来避免。但是还是有一些问题
    • 嗯,这显然可以防止方向更改,但不能在方向更改时调用回调(这是所要求的)。
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多