正如其他答案所说,您可以使用 onSaveInstanceState(Bundle outstate) 和 onRestoreInstanceState(Bundle savedInstanceState) 甚至禁用设备中的方向更改来解决您的问题。
让我们一一来看:
-禁用方向更改,可能会导致用户体验不佳,所以我不赞成它。
- 使用 onSaveInstanceState(Bundle outstate) 和 onRestoreInstanceState(Bundle savedInstanceState) 你有两个主要的选项......
选项1:
您可以仅保存有关正在显示的项目的基本信息(即,如果它是地图,您可以保存地图中心位置和缩放),然后再次从数据库中检索所有覆盖信息。这非常简单,但是如果您要检索数百个叠加项目,它可能会变得非常缓慢,从而再次导致用户体验不佳。
选项 2:
您可以使用 parcelable 来扩展您的覆盖项目,以便您可以在 onSaveInstanceState(Bundle outstate) 期间保存所有覆盖项目,并在不从数据库重新加载的情况下恢复它们。我已经将它用于数千个项目,并且效果很好。
您可以在此处找到可打包信息:Google 和此处的示例:Android – 使用 Parcelable 类在活动之间传递的包裹数据
祝你好运