onDestroy() 在 Activity 处于横向模式时调用 android

问题描述 投票:0回答:3

当应用程序活动处于横向模式时,当有电话打入时,电话将使场景变为纵向模式,

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start_jum);

        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

}

调用后,应用程序中处于横向模式的 Activity 将被销毁并再次创建。

D/StartJumActivity: onPause
D/StartJumActivity: onResume
D/StartJumActivity: onPause
D/StartJumActivity: onDestroy
D/StartJumActivity: on Create

我的活动中的数据被删除并创建新的活动。 从通话返回后,有什么方法可以在横向模式下保留该活动中的这些数据吗?

android android-activity
3个回答
0
投票

您可以尝试强制清单中

Activity
的方向:

android:screenOrientation="landscape"

这可以防止

Activity
被销毁和重新创建。

另一种选择是告诉 Android 您将自己处理方向更改,而不是在方向更改时重新创建

Activity
。为此,请添加

android:configChanges="orientation"

您的

Activity
的舱单声明。现在,当屏幕方向发生时,您的
Activity
将不会被销毁并重新创建。相反,将调用
onConfigurationChange()


0
投票

尝试覆盖

onSaveInstanceState()
以保存您自己的数据并使用
onCreate()
onRestoreInstanceState()
恢复数据。查看此内容以获取更多信息https://www.todaysoftmag.com/article/2663/when-do-screen-orientation-changes-matter#:~:text=In%20Android%2C%20the%20orientation%20changes,称为%2C%20followed%20by%20onCreate()).


0
投票

添加 android:configChanges="方向|屏幕大小" 在你的 AndroidManifest.xml 中

<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|screenSize"
>
© www.soinside.com 2019 - 2024. All rights reserved.