Android中的共享首选项和内部存储有什么区别?数据存储在哪里?

问题描述 投票:-2回答:3

Android中的共享首选项和内部存储有什么区别?数据存储在哪里?看起来Android系统为每个应用程序分配特定的空间量。使用共享首选项时,我的应用程序内存不足并抛出OutOfMemory异常。如果我使用内部存储将此数据保存到文件中,这会解决问题吗?如果内部存储也为应用程序使用相同的有限分配空间,那么如何解决此问题?

android share android-preferences
3个回答
3
投票

SharedPreferences将数据存储在键值对中。它主要将它们存储在RAM中,但它也将副本保存到内部存储器中。 Android提供用于存储代码,所有图形和任何临时数据的RAM,并且它是有限的。如果你存储了很多键值对(也许值很长Strings),你可能确实使用你的应用程序的所有RAM,最终得到OutOfMemoryException。这表明SharedPreference可能不是您尝试存储的数据的正确方法。

相反,内部存储完全基于闪存。应用程序的约束较少,并且可以存储大量数据,如图像。内部存储有点像目录,所以你创建文件,读/写它们,删除它们等等,所以它与键值对不同。


2
投票
  • SharedPreference:将私有原始数据存储在键值对中。 (存储小条目/数据)
  • 内部存储:将私有数据存储在设备内存中。 (存储大型数据集)

使用共享首选项,您无需处理文件IO。对于内部存储,您需要处理文件IO。

如果您有大量数据,则应使用内部存储。您还需要避免存储不必要的数据。

欲了解更多信息,请阅读https://developer.android.com/guide/topics/data/data-storage.html


0
投票

Android中的共享首选项和内部存储有什么区别?

Internal storage指的是机载闪存上的一个位置,该位置是您应用程序专用的,用户无法看到。

SharedPreferences是一种在内部存储上存储数据的方法。

看起来Android系统为每个应用程序分配特定的空间量。

不,虽然他们将来可能会这样做。

使用共享首选项时,我的应用程序内存不足并抛出OutOfMemory异常

OutOfMemoryError指的是堆空间(RAM),而不是存储空间。

如果我使用内部存储将此数据保存到文件中,这会解决问题吗?

可能,虽然这很大程度上取决于你在做什么。

© www.soinside.com 2019 - 2024. All rights reserved.