1

onCreate()MainActivity的应用程序中,我的应用程序执行密集操作以生成一些数据集(在单独的线程中运行,但需要大约 2 - 3 秒才能正常完成)。现在我的问题是,当方向改变时,应用程序再次执行这个复杂的计算。

由于我以前没有做过这样的事情,我想知道是否有办法解决这个问题。我的第一个想法是将计算的数据存储在一个static变量中,以便数据在不同的MainActivity. 我猜这不是最好的方法。

如果有帮助,我的数据集由 aMap和 anArrayList而不是简单的数据类型组成。我看过onSaveInstanceState(),但它只提供存储值,如 int、String 等。

4

1 回答 1

1

除了@Raghunandan 建议的内容之外,您还可以阅读有关重新创建活动的官方文档。它说:

Your activity will be destroyed and recreated each time the user rotates the screen. When the screen changes orientation, the system destroys and recreates the foreground activity because the screen configuration has changed and your activity might need to load alternative resources (such as the layout.

它还引入了 onSaveInstanceState()的概念(要保存有关活动状态的其他数据,您必须重写此方法)和 onRestoreInstanceState()方法(此方法的默认实现执行恢复之前已被冻结的任何视图状态onSaveInstanceState(捆绑))。

您还可以在此处使用 Save Instance State线程保存 Android Activity 状态查看这些方法的示例实现,这将帮助您保存和恢复状态。

更新

您也可以尝试使用:

<activity name= ".YourActivity" android:configChanges="orientation|screenSize"/>

说的文档android:configChanges

It lists configuration changes that the activity will handle itself. When a configuration change occurs at runtime, the activity is shut down and restarted by default, but declaring a configuration with this attribute will prevent the activity from being restarted.资料来源:如果状态由我的类组成,如何在 Android 中的方向更改期间保存状态? 希望这可以帮助。

于 2013-07-11T04:08:44.650 回答