如何保存Float对象的ArrayList,以便在Activity重新启动时可以检索它?

时间:2013-04-15 03:24:25

标签: android orientation dynamic-memory-allocation

我有一个问题。存储Float对象的ArrayList的最佳方法是什么,以便在我的Activity重新启动时由于切换设备的方向而可以重新加载ArrayList?我想过使用Bundles,但是我不得不扩展Float类以使它实现Parcelable。由于该课程已被宣布为最终,不幸的是,我不能这样做。我做了一些搜索,并遇到了类似问题的一些解决方案,例如重写onRetainNonConfigurationInstance()。我还考虑过为float原语创建自己的裸骨包装类并使其成为Parcelable。必须注意的是,我希望保存的ArrayLists是在其Activity的DrawView实例中创建实例的类内部。

我还不想发布任何代码,因为除了研究可能的解决方案之外,我还没有做任何事情来解决问题。如果你们需要看到它,请告诉我,我很乐意发布它。

在相关的说明中,我决定使用ArrayLists的原因是因为我想使用某种形式的动态内存分配。因为我的应用程序的性质,我无法预测数组中有多少个对象,我想要有一些方法只分配我存储Float对象所需的内存。说实话我只需要存储浮点基元,但是ArrayLists需要非基元任何机会,由于你们知道更好的方法,因为使用带浮点数的ArrayLists来存储原始值对我来说似乎有点笨拙。

2 个答案:

答案 0 :(得分:1)

NonConfig方法现在(从API 13 / Android 3.2开始)已被弃用,但这在实践中并没有太大意义,特别是如果您想支持较旧的API级别,因为弃用的方法通常会保持不变很久。 As of today, according to official Google figures, Android 2 aka APIs 8 to 10 has a market share of 43.8% (note: that page will get updated regularly)和许多2.3(API 9或10)设备目前正在预算细分市场中销售。如果您不想支持这些,请三思而后行,并放心Google不会很快停用NonConfig方法。

关于onRetainNonConfigurationInstance()getLastNonConfigurationInstance()的好处是,它们在资源消耗和实施工作方面都非常有效。有近50%的设备没有提供更好的方法,它只是今天的方式。

答案 1 :(得分:-1)

带有浮点数组的静态类怎么样?