Android 如何保存浮点对象的ArrayList,以便在活动重新启动时检索它?

Android 如何保存浮点对象的ArrayList,以便在活动重新启动时检索它?,android,orientation,dynamic-memory-allocation,Android,Orientation,Dynamic Memory Allocation,我有个问题。存储浮动对象的ArrayList的最佳方式是什么,以便在由于切换设备方向而重新启动活动时重新加载ArrayList?我曾考虑过使用bundle,但后来我不得不扩展Float类,使其实现可打包。由于该类已声明为最终类,很遗憾,我不能这样做。我做了一些搜索,并找到了一些类似问题的解决方案,例如重写onRetainonConfiguration Instance()。我还考虑为float原语创建自己的裸体包装器类,并使其可打包。必须注意的是,我希望保存的ArrayList位于类中,这些类的

我有个问题。存储浮动对象的ArrayList的最佳方式是什么,以便在由于切换设备方向而重新启动活动时重新加载ArrayList?我曾考虑过使用bundle,但后来我不得不扩展Float类,使其实现可打包。由于该类已声明为最终类,很遗憾,我不能这样做。我做了一些搜索,并找到了一些类似问题的解决方案,例如重写onRetainonConfiguration Instance()。我还考虑为float原语创建自己的裸体包装器类,并使其可打包。必须注意的是,我希望保存的ArrayList位于类中,这些类的实例是在我的活动的DrawView实例中创建的

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


另一方面,我决定使用ArrayList的原因是因为我想使用某种形式的动态内存分配。因为,由于我的应用程序的性质,我无法预测数组中将有多少个对象,所以我想有一种方法,只分配存储浮点对象所需的内存。老实说,我只需要存储浮点原语,但ArrayList可能需要非原语,因为你们知道更好的方法,因为使用带有浮点数的ArrayList来存储基元值对我来说似乎有点笨拙。

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

现在(从API 13/Android 3.2开始)不推荐使用
非配置方法,但这在实践中并没有多大意义,特别是如果您想支持较旧的API级别,因为不推荐的方法通常会保留很长时间。许多2.3(API 9或10)设备目前正在预算市场中销售。因此,如果你不想支持这些,请三思而后行,并且请放心,谷歌不会很快禁用
nonfig
方法


onretainonconfigurationinstance()
getLastNonConfigurationInstance()
的优点在于,它们在资源消耗和实现工作方面都非常高效。几乎有50%的设备没有提供更好的解决方案,从今天开始,这就是最好的解决方案。

Wow!我完全忘记了“静态”修饰符。好主意。你的意思是,在一个子类的
应用程序
类中吗?所以,说得很清楚,我应该创建一个静态的公共类,把我的ArrayList放在那个对象中,然后简单地从我的其他类中修改它们?如果我稍微修改一下其他类的代码,我就可以做到。在我看来,这是不可取的。这意味着您必须在每个活动生命周期回调中主动管理变量的内容,而且您还可能失去未来的兼容性,因为它是一个“反向”实现,在需要保存数据时不保存数据,而是始终保留数据,在需要删除数据时强制删除数据。我建议@user2154603不要采用这种非Androidish的、也不是最佳实践的方法,除非他想要不可预测的持久性。好的,当需要持久化到磁盘时,使用存储库模式并保存到sqlite,否则保存在内存中跨配置更改保存状态的最佳方法仍然是
nonfig
我想评论一下Android上的静态类,如下所示。这些并不像你在Android上期望的那样工作。不要说我没有警告你。