react native android:如何保存屏幕旋转或方向的状态

vsdwdz23  于 2023-05-07  发布在  React
关注(0)|答案(3)|浏览(116)

在旋转屏幕上,似乎活动正在重新启动,它失去了所有状态。我查看了Android开发者指南。Handling Runtime Changes .它提到了如何处理屏幕方向和使用onSaveInstanceState()之前,它破坏了你的活动和恢复状态期间onCreate()onRestoreInstanceState()

b09cbbtk

b09cbbtk1#

我回答我的问题,这是它如何为我工作,如果有人面临同样的问题,然后在***android/app/src/main***和***local-cli/generator-android/templates/src/app/src/main***上编辑AndroidManifest.xml

<activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
hof1towb

hof1towb3#

对我有效的解决方案是避免在方向更改时重新启动应用程序而不保存状态,如果您遵循此操作,则不需要保存状态。

if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ||
  newConfig.orientation == Configuration.ORIENTATION_PORTRAIT ||
  newConfig.orientation == Configuration.ORIENTATION_UNDEFINED ) { 
    return; 
  }

说明:-

当你旋转屏幕应用程序将得到重新启动这里的原因是为什么和如何可以避免重新启动的应用程序对方向的变化,
1.你必须在AndroidMenifest.xml <activity>标签中添加android:configChanges="orientation",它会告诉android调用onConfigurationChanged(Configuration newConfig)
1.在你的activity文件中覆盖onConfigurationChanged(Configuration newConfig),在我的例子中是MainActivity.java,在React Native中它默认被覆盖,在这个方法中instanceManager.recreateReactContextInBackground(newConfig)被调用,这个方法负责重启你的应用,现在为了避免重启行为,你必须根据newConfig添加条件

相关问题