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

时间:2019-03-16 15:33:11

标签: android share android-preferences

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

3 个答案:

答案 0 :(得分:2)

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

内部存储器完全基于闪存。应用程序在那里的约束较少,它们可以存储大量数据,例如图像。内部存储有点像目录,因此您可以创建文件,对其进行读/写,删除它们等,因此与键值对不同。

答案 1 :(得分:1)

SharedPreference:将私有原始数据存储在键值对中。 (存储小条目/数据) 内部存储:将私有数据存储在设备内存中。 (存储大型数据集) 使用共享首选项,您不需要处理文件IO。对于内部存储,您需要处理文件IO。 如果您有大量数据,则应使用内部存储。另外,您还需要避免存储不必要的数据。 有关更多信息,请阅读https://developer.android.com/guide/topics/data/data-storage.html

答案 2 :(得分:0)

  

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

Internal storage指的是板载闪光灯上某个位置,该位置是您的应用专用的,用户看不见。

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

  

好像Android系统为每个应用程序分配了特定数量的空间。

不,尽管他们将来可能会这样做。

  

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

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

  

如果我使用内部存储器将该数据保存到文件中,是否可以解决问题?

可能,尽管这很大程度上取决于您的工作。