Android,查看生命周期和恢复

时间:2012-10-22 08:28:03

标签: android view lifecycle restore

我有一个由

创建的视图
this.vehicleListUI = new GameUIVehicleList();
this.vehicleListUI.attachGameEngine(myGameEngine);

这项工作对于android销毁并恢复视图。 Android可以使用空构造函数重新创建视图, 但我的问题是这个问题GameUIVehicleList将工作我大多数也有myGameEngine 对象设置为GameUIVehicleList

myGameEngine不是可序列化的,不能是这个(是UI的一部分)

这样就可以通过重新附加myGameEngine对象来完全恢复我的View 到创建视图。 这对于将大量“new GameUIVehicleList()”添加到XML布局文件中也很有用。

修改

我不知道这是否有所帮助但是我从头开始遇到这个问题 我使用android.support.v4.app.FragmentActivity并继续销毁和重新创建 我的View对象。我还可以通过覆盖android.support.v4.app.FragmentActivity中的一些方法来修复此问题,同时调用FragmentActivity重新创建/创建一个片段,并为此设置我的Activity中包含需要数据的需要值。

2 个答案:

答案 0 :(得分:2)

销毁和重新创建活动(和视图)通常发生在配置更改(最常见的是屏幕方向更改)上。您可能需要检查this article是否有帮助,而onRetainNonconfigurationInstance() / setRetainInstance()无法解决您的问题。

答案 1 :(得分:0)

如果myGameEngine不是SerializableParcelable,我认为无法可靠地执行此操作。

但是如果没问题,有时候myGameEngine有时无法恢复,你可以使用自己的自定义Application类扩展MyApplication类,该类包含变量myGameEngine然后在onCreate中,您可以获得保存在应用程序上下文中的myGameEngine

MyApplication app = (MyApplication) this.getApplicationContext();
this.vehicleListUI.attachGameEngine(app.myGameEngine);