2011-08-21 62 views
0

我开发了一个非常简单的游戏,它使用自定义视图来绘制屏幕。在我的手机(Android 2.2)上,我可以按设备上的主页按钮并执行其他任务。当回到游戏时,它会恢复到之前的确切状态。事情是,我不必重写任何方法,或者真的为此行为发生任何事情。然而,在Honeycomb上,它重置了我所期望的一切。用Honeycomb保存视图状态

这是非常令人费解的......我想知道是否有办法让Honeycomb在这方面表现得像2.2一样。我对保存视图状态不太熟悉,但由于我有很多变量(数百个,取决于自定义对象的保存方式),我认为手动操作会让人不快。

回答

1

我能解决它。有点。

基本上,这个问题是由Android在我的活动中处理屏幕被固定到肖像模式的方式造成的。在2.2中,Android会以纵向模式打开活动,而不是重新启动活动。但是,在Android 3.0中,它会打开活动,然后THEN旋转屏幕,导致它重新开始活动(因为发生旋转时会发生这种情况)。

为了解决这个问题,我增加了以下我的清单中的活动:

android:configChanges="keyboardHidden|orientation" 

这告诉Android你会处理配置改变自己。就我而言,我什么都不做,因为我的应用程序被锁定在肖像模式下。

应用程序暂停时未清除状态的原因是因为onCreate()未被调用。我知道Android可以杀死应用程序,但会调用onCreate(),所以我仍然必须通过保存Activity变量并重新创建View来处理这种情况。